Wednesday, October 20, 2021

Delivery Date Modification sending Email Alerts

 Based on Delivery Date Filed Modified by user will send email to concern department head

using Email template to send email 

FormName - PurchTable

Path -PurchTable /DataSource-PurchTable/DeliveryDate/ModifiedMethod





added the below code in PurchTable-Methods

//</Kavin Sending notification to Supplier>

public static void sendEmailVendor(PurchTable     purchTable)

{  str positionName,finalResult;

    int found = 0;

    int found1 = 0;

    FromDate                        fromDate;

    SecurityRole                    securityRole;

    SecurityUserRole                securityUserRole;

    DirPersonUser                   personUser;

    DataAreaId                      employeeEntity;

    Name                            entityName;

    SysMailer                       mailer;

    UserId                          _sendingUserId;

    str                             mailAppendTo,Person,mailSubject,body,MgrdBody,

                                    sendMailTo,sendMailCc,Employee,BccMailto,

                                    BccMailID,mailServer,s,HRManager,SendFrom;

    int                             mailServerPort;

    int64                           StartWorkerId;

    str                             NoofDays;

    str                             IsAnnual,subject;

    str                             OveralJudgement;

    Query                           query;

    QueryRun                        qr;

    QueryBuildDataSource            qbd1;

    List                            list,listForBcc;

    ListEnumerator                  listEnumerator,listEnumerator1;


    Name FromName = HcmWorker::find(HcmWorker::userId2Worker(curUserId())).name();

    SysMailer mail;

    SysOutgoingEmailTable outgoingEmailTable;

    SysEmailItemId nextEmailItemId;

    System.Net.Mail.SmtpClient          mailClient;

    System.Net.NetworkCredential        credentials;

    System.Net.Mail.MailMessage         mailMessage;

    Email email;

    SysEmailParameters parameters = SysEmailParameters::find();

    str pwd;

    Map map;


    SysEmailTable        sysEmailTable        = SysEmailTable::find('POChanged');

    SysEmailMessageTable sysEmailMessageTable = SysEmailMessageTable::find(sysEmailTable.EmailId, sysEmailTable.DefaultLanguage);


    mailer         = new SysMailer();

    mailServer     = SysEmaiLParameters::find(false).SMTPRelayServerName;

    mailServerPort = SysEmaiLParameters::find(false).SMTPPortNumber;

    SendFrom       = SysEmaiLParameters::find(false).SMTPUserName;

    fromDate       = systemDateGet();

    if(purchTable)

    {

        Person = smmParametersTable::find().GH_EmailCC;

        s = date2Str(today(),213,DateDay::Digits2, DateSeparator::Hyphen, DateMonth::Digits2, DateSeparator::Hyphen, DateYear::Digits4);

        subject = "Delivery date changed Notification";

        if(SendFrom && Person)

        {

            mailSubject = subject ;


            body =  strFmt(sysEmailMessageTable.Mail,strFmt("%1: %2",purchTable.PurchId,purchTable.PurchName),

            strFmt("%1- %2",purchTable.OrderAccount,VendTable::find(purchTable.OrderAccount).name()),PurchTable.orig().DeliveryDate,PurchTable.DeliveryDate,HcmWorker::find(HcmWorker::userId2Worker(curUserId())).name());

            mailClient = new System.Net.Mail.SmtpClient();

            mailClient.set_DeliveryMethod(System.Net.Mail.SmtpDeliveryMethod::Network);

            mailClient.set_Host(parameters.SMTPRelayServerName);

            mailClient.set_Port(SysEmaiLParameters::find(false).SMTPPortNumber);

            mailClient.set_DeliveryMethod(System.Net.Mail.SmtpDeliveryMethod::Network);

            //mailClient.set_EnableSsl(true);

            pwd=SysEmaiLParameters::password();

            credentials = new System.Net.NetworkCredential(parameters.SMTPUserName, pwd);

            mailClient.set_UseDefaultCredentials(false);

            mailClient.set_Credentials(credentials);

            mailClient.set_Timeout(30000000);

            mailMessage = new System.Net.Mail.MailMessage(SendFrom, Person);

            mailMessage.set_Subject(mailSubject);

            mailMessage.set_Body(body);

            mailMessage.set_IsBodyHtml(true);

            try

            {

                mailClient.Send(mailMessage);

            }

            catch (Exception::CLRError)

            {

                info("Event:" + AifUtil::getClrErrorMessage());

            }

            _sendingUserId = "Administ";

            //Inserting History in Outgoing Email Table here ***

            nextEmailItemId = EventInbox::nextEventId();

            outgoingEmailTable.EmailItemId = nextEmailItemId;

            outgoingEmailTable.IsSystemEmail = NoYes::No;

            outgoingEmailTable.Sender = SendFrom;

            outgoingEmailTable.SenderName = "Administ";

            outgoingEmailTable.Recipient  = Person;

            outgoingEmailTable.Subject    = SysEmailMessage::stringExpand(subject, map);

            outgoingEmailTable.Priority   = eMailPriority::Normal ;

            outgoingEmailTable.WithRetries = false;

            outgoingEmailTable.RetryNum = 0;

            outgoingEmailTable.UserId = _sendingUserId;//curUserId();

            outgoingEmailTable.Status = SysEmailStatus::Sent;

            outgoingEmailTable.Message = body;

            outgoingEmailTable.Origin  = sysEmailTable.Description;

            outgoingEmailTable.LatestStatusChangeDateTime = DateTimeUtil::getSystemDateTime();

            outgoingEmailTable.insert();

        }

      info(strFmt("PO has been changed and  email sent to - %1",Employee));

    }

}

//</Kavin End>






Dear All,

PO Number: %1 delivery date is changed . please have  a check and take the action

Supplier : %2

Old delivery date: %3

Modified delivery date: %4

Modified by: %5

For your reference & information.


Best regards,


Dynamics AX .
This is an automatically generated message. Please do not try to reply to this E-Mail.


Tuesday, March 9, 2021

CustTable form Button Click to Update customer status

 

CustTable Form Button Click method to Update customer status under the current customer account mapped to child accounts 


void clicked()

{

    CustTable                       custTableLoc;

    CustTable                       custTableCur = CustTable::find(custTable.AccountNum);

    GOD_CustStatusChangeTracking    statusTracking;

    int                             counter;


    super();

        info(strFmt("%1 - %2", custTableCur.GOD_StatusChangeReason, custTableCur.GOD_CustStatus));


    ttsBegin;

    while select forUpdate custTableLoc

        where custTableLoc.GOD_ParentCustomer == custTableCur.AccountNum

           && custTableLoc.InvoiceAccount == custTableCur.AccountNum

            && custTableLoc.AccountNum != custTableCur.AccountNum

    {

        if(custTableLoc.GOD_CustStatus != GOD_CustStatus::None)

        {

            custTableLoc.Blocked = CustVendorBlocked::All;

        }

        else

        {

            custTableLoc.Blocked = CustVendorBlocked::No;

        }


        custTableLoc.GOD_StatusChangeReason = custTableCur.GOD_StatusChangeReason;

        custTableLoc.GOD_CustStatus = custTableCur.GOD_CustStatus;

        custTableLoc.update();


        statusTracking.clear();

        statusTracking.OldCustStatus = custTableLoc.GOD_CustStatus;

        statusTracking.AccountNum = custTableLoc.AccountNum;

        statusTracking.ReasonNotes  = custTableCur.GOD_StatusChangeReason;

        statusTracking.NewCustStatus = custTableLoc.orig().GOD_CustStatus;

        statusTracking.insert();


        counter++;

    }

    ttsCommit;


    info(strFmt("%1 child account's status has been changed", counter));

}

Saturday, March 6, 2021

Form Menu Button click method to update field by filtering records only in form

 adding menu button to update the filed in table for marked based on filtered records only  


void clicked()

{

   GOD_CashCollection  god_CashCollectionUpdate;

   super();


  ttsBegin;

    for(god_CashCollectionUpdate = getFirstSelection(GOD_CashCollection_ds);god_CashCollectionUpdate;god_CashCollectionUpdate = GOD_CashCollection_ds.getNext())

    {

       //info( god_CashCollectionUpdate.InvoiceId);

        if(god_CashCollectionUpdate.Delivered)

        {

         god_CashCollectionUpdate.selectForUpdate(true);

         god_CashCollectionUpdate.MissingInvoice = NoYes::No;

         god_CashCollectionUpdate.AccountConfirmed = NoYes::Yes;

         god_CashCollectionUpdate.update();

        }

    }

    ttsCommit;

    GOD_CashCollection_ds.research(true);

}





Vendor Statement Controlling settlement entries in display

 Adding new parameter checkbox to display the entries in Vendor statement 


VendAccountStatementIntContract()

variable declaration 

boolean incSettlement;

boolean incForeignCuyRevaluation;


[

    DataMemberAttribute('incForeignCuyRevaluation'),

    SysOperationLabelAttribute(literalstr("FC Revaluation")),

    SysOperationHelpTextAttribute(literalstr("Include foreignCurrency Revaluationn")),

    SysOperationGroupMemberAttribute('Criteria'),

    SysOperationDisplayOrderAttribute('14')



]

public boolean parmIncForeignCuyRevaluation(boolean _incForeignCuyRevaluation = incForeignCuyRevaluation)

{

    incForeignCuyRevaluation = _incForeignCuyRevaluation;

    return incForeignCuyRevaluation;

}


[
    DataMemberAttribute('IncSettlement'),
    SysOperationLabelAttribute(literalstr("Inc settlement")),
    SysOperationHelpTextAttribute(literalstr("Include settlement transaction")),
    SysOperationGroupMemberAttribute('Criteria'),
    SysOperationDisplayOrderAttribute('13')
]
public boolean parmIncSettlement(boolean _incSettlement = incSettlement)
{
    incSettlement = _incSettlement;
    return incSettlement;
}




Dp class /  VendAccountStatementIntDP / initVendTransQuery

/// <summary>

/// Creates and executes the query.

/// </summary>

/// <returns>

/// A <c>Query</c> object.

/// </returns>

/// <remarks>

/// Adds data source, ranges, and sorting based on the selected parameters.

/// </remarks>

public Query initVendTransQuery()

{

    Query query = this.parmQuery();


    QueryBuildDataSource vendTableDataSource                    = SysQuery::findOrCreateDataSource(query, tableNum(VendTable));

    QueryBuildDataSource vendTransDataSource                    = vendTableDataSource.addDataSource(tableNum(VendTrans));

    QueryBuildDataSource transactionReversalTransDataSource     = vendTransDataSource.addDataSource(tableNum(TransactionReversalTrans));

    QueryBuildDataSource bankLCVendTransDataSource;

    QueryBuildDataSource ds;


    vendTransDataSource.relations(true);

    vendTransDataSource.joinMode(JoinMode::OuterJoin);


    transactionReversalTransDataSource.addLink(fieldNum(VendTrans, RecId), fieldNum(TransactionReversalTrans, RefRecId));

    transactionReversalTransDataSource.addLink(fieldNum(VendTrans, TableId), fieldNum(TransactionReversalTrans, RefTableId));

    transactionReversalTransDataSource.fetchMode(QueryFetchMode::One2One);

    transactionReversalTransDataSource.joinMode(JoinMode::OuterJoin);


    vendTransDataSource.addRange(fieldNum(VendTrans,AccountNum));


    if (fromDate || toDate)

    {

        vendTransDataSource.addRange(fieldNum(VendTrans,TransDate)).value(queryRange(fromDate, toDate));

    }


    if (currencyCode)

    {

        vendTransDataSource.addRange(fieldNum(VendTrans,CurrencyCode)).value(currencyCode);

    }

    //-- added by kavin for control settlement entries and foreign currency revaluation to display as per checkbox control in report 

    if(!includeSettlement && includeForeignCuyRevaluation)

    {

        vendTransDataSource.addRange(fieldNum(VendTrans,TransType)).value(SysQuery::valueNot(LedgerTransType::Settlement));

    }


    if(!includeForeignCuyRevaluation && includeSettlement)

    {

        vendTransDataSource.addRange(fieldNum(VendTrans,TransType)).value(SysQuery::valueNot(LedgerTransType::ExchAdjustment));

    }


    if(!includeForeignCuyRevaluation && !includeSettlement)

    {

        vendTransDataSource.addRange(fieldNum(VendTrans,TransType)).value(queryNotValueCon_W([LedgerTransType::Settlement,LedgerTransType::ExchAdjustment]));

    }

    // --- ended checkbox control in report 

    

    vendTransDataSource.addSortField(fieldNum(VendTrans,TransDate));

    vendTransDataSource.addSortField(fieldNum(VendTrans,Voucher));


    if (!includeReversed)

    {

        ds = vendTransDataSource.addDataSource(tableNum(TransactionReversalTrans));

        ds.joinMode(JoinMode::NoExistsJoin);

        ds.addLink(fieldNum(VendTrans,TableId), fieldNum(TransactionReversalTrans,RefTableId));

        ds.addLink(fieldNum(VendTrans,RecId), fieldNum(TransactionReversalTrans,RefRecId));

        ds.addRange(fieldNum(TransactionReversalTrans,Reversed)).value(enum2str(NoYes::Yes));

    }


    if (BankLCImportFeatureChecker::checkBankLCImportEnabled())

    {

        if (bankLCBankDocumentType != BankLCBankDocumentType::All)

        {

            bankLCVendTransDataSource = vendTransDataSource.addDataSource(tableNum(BankLCVendTrans));

            bankLCVendTransDataSource.joinMode(JoinMode::ExistsJoin);

            bankLCVendTransDataSource.addLink(fieldNum(VendTrans, BankLCImportLine), fieldNum(BankLCVendTrans, BankLCImportLine));

            bankLCVendTransDataSource.addRange(fieldNum(BankLCVendTrans, BankDocumentType)).value(

            SysQuery::value(BankLCCustVendTransHelper::convertDocumentType(bankLCBankDocumentType)));

        }

    }


    return query;

}


Tuesday, January 5, 2021

Inventory Value Report Adding New Field filter

 Adding new field in InventValueReportTmpLine Table and InventValueReportTmpLine sysQuery 

then add below lines in InventValueReportPopulateItem Class 

protected Map mapReportLineToInventTable()

{

    Map   map;

    map = new map(Types::Integer, Types::Integer);

    map.insert(fieldNum(InventValueReportTmpLine, ResourceId), fieldNum(InventTable, ItemId));

    map.insert(fieldNum(InventValueReportTmpLine, ShipmentMode), fieldNum(InventTable, ShipmentMode));//-- newly added for filtering

    return map;

}

-----------------------------------

protected void buildTransactionsWithDynamicQuery()

q = new Query();

    qbdsInventTable = q.addDataSource(tableNum(InventTable));

    qbdsInventTable.orderMode(OrderMode::GroupBy);

    qbdsInventTable.addGroupByField(fieldNum(InventTable, ItemType));

    qbdsInventTable.addGroupByField(fieldNum(InventTable, ShipmentMode));//-- newly added for filtering

    if (inventValueReport.ViewResourceId || inventValueReport.ViewResourceIdTotal)

    {

        qbdsInventTable.addGroupByField(fieldNum(InventTable, ItemId));

    }


-----------------


protected void buildTransactionsWithDynamicQuery()

{

    Query                               q;

    QueryRun                            qr;

    QueryBuildDataSource                qbds;

    QueryBuildDataSource                qbdsInventTable;

    QueryBuildDataSource                qbdsInventView;


    InventItemGroupItem                 inventItemGroupItem;

    InventTable                         inventTable;

    EcoResProductDimensionGroupProduct  productDimensionGroupProduct;

    EcoResStorageDimensionGroupItem     storageDimensionGroupItem;

    EcoResTrackingDimensionGroupItem    trackingDimensionGroupItem;

    InventValueReportView               inventView;

    InventDim                           inventDim, fetchedInventDim;

    InventValueReportTmpLine            tmpReportLine;

    InventDimParm                       inventDimParmProduct;

    InventDimParm                       inventDimParmStorage;

    InventDimParm                       inventDimParmTracking;

    InventDimParm                       financialInventDimParm;

    InventDimParm                       populateInventDimParm;

    InventDimParm                       inventDimParmFilter;

    boolean                             updateFinancialInventDimParm;

    boolean                             joinInventDim;

    boolean                             joinProductDimensionGroupProduct;

    boolean                             joinStorageDimensionGroupProduct;

    boolean                             joinTrackingDimensionGroupProduct;

    boolean                             joinInventItemGroupItem;

    boolean                             isInventDimParmEqual = true;


    // Group by dimensions (view || total)

    populateInventDimParm = InventDimParm::orParms(inventValueReport.viewInventDimParm(), inventValueReport.totalInventDimParm());


    joinInventDim = this.isRangeSetOnReportLine(this.MapReportLineToInventDim(), inventDimParmFilter) ||

                    populateInventDimParm.anyProductDimensionFlagSet() ||

                    populateInventDimParm.anyStorageDimensionFlagSet() ||

                    populateInventDimParm.anyTrackingDimensionFlagSet();


    joinInventItemGroupItem = inventValueReport.ViewResourceGroup || inventValueReport.ViewResourceGroupTotal;

    joinProductDimensionGroupProduct = populateInventDimParm.anyProductDimensionFlagSet();

    joinStorageDimensionGroupProduct = populateInventDimParm.anyStorageDimensionFlagSet();

    joinTrackingDimensionGroupProduct = populateInventDimParm.anyTrackingDimensionFlagSet();


    q = new Query();

    qbdsInventTable = q.addDataSource(tableNum(InventTable));

    qbdsInventTable.orderMode(OrderMode::GroupBy);

    qbdsInventTable.addGroupByField(fieldNum(InventTable, ItemType));

    qbdsInventTable.addGroupByField(fieldNum(InventTable, ShipmentMode));//-- newly added for filtering

    if (inventValueReport.ViewResourceId || inventValueReport.ViewResourceIdTotal)

    {

        qbdsInventTable.addGroupByField(fieldNum(InventTable, ItemId));

    }

    this.copyRangesFromContractQuery(this.MapReportLineToInventTable(), qbdsInventTable);


    qbds = qbdsInventTable;

    if (joinInventItemGroupItem)

    {

        qbds = this.joinInventItemGroupItem(qbds, qbdsInventTable);

    }

    if (joinProductDimensionGroupProduct)

    {

        qbds = this.joinProductDimensionGroupProduct(qbds, qbdsInventTable);

    }

    if (joinStorageDimensionGroupProduct)

    {

        qbds = this.joinStorageDimensionGroupProduct(qbds, qbdsInventTable);

    }

    if (joinTrackingDimensionGroupProduct)

    {

        qbds = this.joinTrackingDimensionGroupProduct(qbds, qbdsInventTable);

    }


    qbdsInventView = qbds.addDataSource(tableNum(InventValueReportView));

    qbdsInventView.addLink(fieldNum(InventTable, ItemId), fieldNum(InventValueReportView, ItemId), qbdsInventTable.name());


    switch (inventValueReport.SelectDateRange)

    {

        case InventValueReportSelectDateRange::TransDate:

            qbdsInventView.addRange(fieldNum(InventValueReportView, TransDate)).value(queryRange(this.getActualFromDate(), dateMax()));

            break;

        case InventValueReportSelectDateRange::TransBeginTime:

            qbdsInventView.addRange(fieldNum(InventValueReportView, TransBeginTime)).value(queryRange(this.getActualFromDate(), DateTimeUtil::maxValue()));

            break;

    }

    qbdsInventView.orderMode(OrderMode::GroupBy);


    if (this.parmResourceId())

    {

        qbdsInventView.addRange(fieldNum(InventValueReportView, ItemId)).value(queryValue(this.parmResourceId()));

    }


    if (joinInventDim)

    {

        qbds = this.joinInventDim(qbdsInventView, populateInventDimParm);

    }


    // select sum(field)

    qbdsInventView.addSelectionField(fieldNum(InventValueReportView, Qty), SelectionField::Sum);

    qbdsInventView.addSelectionField(fieldNum(InventValueReportView, Amount), SelectionField::Sum);


    // InventView

    qbdsInventView.addGroupByField(fieldNum(InventValueReportView, TransDate));

    if (inventValueReport.DetailLevel == TotalTrans::Trans)

    {

        qbdsInventView.addGroupByField(fieldNum(InventValueReportView, Voucher));

        qbdsInventView.addGroupByField(fieldNum(InventValueReportView, Reference));


    }


    // Group by dates regardless of DetailLevel value, so that the records with TransDate > ToDate could be deleted later, in the run() method

    if (inventValueReportContracts.parmViewTransBeginTime() ||

        inventValueReport.SelectDateRange == InventValueReportSelectDateRange::TransBeginTime)

    {

        qbdsInventView.addGroupByField(fieldNum(InventValueReportView, TransBeginTime));

    }

    qbdsInventView.addGroupByField(fieldNum(InventValueReportView, ReferenceCategory));

    qbdsInventView.addGroupByField(fieldNum(InventValueReportView, InventTransPostingType));

    qbdsInventView.addGroupByField(fieldNum(InventValueReportView, IsPosted));

    if (inventValueReportContracts.parmViewCOGSFinancial() || inventValueReportContracts.parmViewCOGSTotal())

    {

        qbdsInventView.addGroupByField(fieldNum(InventValueReportView, PostingTypeOffset));

    }

    this.copyRangesFromContractQuery(this.mapReportLineToReportView(), qbdsInventView);


    qr = new QueryRun(q);

    while (qr.next())

    {

        if (qr.changed(tableNum(InventTable)))

        {

            inventTable  = qr.get(tableNum(InventTable));

            this.insertReportLines();

        }

        if (joinInventItemGroupItem && qr.changed(tableNum(InventItemGroupItem)))

        {

            inventItemGroupItem  = qr.get(tableNum(InventItemGroupItem));

            this.insertReportLines();

        }

        if (joinProductDimensionGroupProduct && qr.changed(tableNum(EcoResProductDimensionGroupProduct)))

        {

            productDimensionGroupProduct = qr.get(tableNum(EcoResProductDimensionGroupProduct));

            inventDimParmProduct.data(EcoResProductDimGroupSetupCache::financialInventoryEnabled(productDimensionGroupProduct.ProductDimensionGroup));

            updateFinancialInventDimParm = true;

        }

        if (joinStorageDimensionGroupProduct && qr.changed(tableNum(EcoResStorageDimensionGroupItem)))

        {

            storageDimensionGroupItem = qr.get(tableNum(EcoResStorageDimensionGroupItem));

            inventDimParmStorage.data(EcoResStorageDimGroupSetupCache::financialInventoryEnabled(storageDimensionGroupItem.StorageDimensionGroup));

            updateFinancialInventDimParm = true;

        }

        if (joinTrackingDimensionGroupProduct && qr.changed(tableNum(EcoResTrackingDimensionGroupItem)))

        {

            trackingDimensionGroupItem = qr.get(tableNum(EcoResTrackingDimensionGroupItem));

            inventDimParmTracking.data(EcoResTrackingDimGroupSetupCache::financialInventoryEnabled(trackingDimensionGroupItem.TrackingDimensionGroup));

            updateFinancialInventDimParm = true;

        }

        if (qr.changed(tableNum(InventValueReportView)))

        {

            inventView  = qr.get(tableNum(InventValueReportView));

        }

        if (updateFinancialInventDimParm)

        {

            financialInventDimParm.data(inventDimParmProduct);

            financialInventDimParm = InventDimParm::orParms(financialInventDimParm, inventDimParmStorage);

            financialInventDimParm = InventDimParm::orParms(financialInventDimParm, inventDimParmTracking);

            isInventDimParmEqual = InventDimParm::isInventDimParmEqual(inventDimParmFilter, InventDimParm::andParms(inventDimParmFilter, financialInventDimParm));

        }


        if (isInventDimParmEqual && joinInventDim && (!fetchedInventDim || qr.changed(tableNum(InventDim))))

        {

            fetchedInventDim = qr.get(tableNum(InventDim));

            // Fields might not have been selected on the specified buffers, or might have been updated since selection

            fetchedInventDim.checkInvalidFieldAccess(false);

            // Clear non-financial dimensions (qr.next() is restoring the values)

            inventDim.data(fetchedInventDim);

            inventDim.clearNotSelectedDim(financialInventDimParm);

        }


        updateFinancialInventDimParm = false;


        if (isInventDimParmEqual && (inventView.Qty || inventView.Amount))

        {

            // Update transaction lines

            if (inventValueReport.DetailLevel == TotalTrans::Trans)

            {

                if (this.selectedDate(inventView) <= this.getActualToDate())

                {

                    tmpReportLine = this.findReportLine(InventValueReportLineType::Transaction, inventTable, inventItemGroupItem, inventView, inventDim);

                    this.updateReportLineBalance(tmpReportLine, 1, inventTable, inventView);

                    this.updateReportLinePL(tmpReportLine, inventTable, inventView);

                    this.updateReportLine(tmpReportLine);

                }

                // Update beginning balance

                if (inventValueReport.IncludeBeginningBalance)

                {

                    tmpReportLine = this.findReportLine(InventValueReportLineType::BeginningBalance, inventTable, inventItemGroupItem, inventView, inventDim);

                    this.updateReportLineBalance(tmpReportLine, -1, inventTable, inventView);

                    this.updateReportLine(tmpReportLine);

                }

            }

            else

            {

                // Update ending balance

                tmpReportLine = this.findReportLine(InventValueReportLineType::EndingBalance, inventTable, inventItemGroupItem, inventView, inventDim);

                if (this.selectedDate(inventView) > this.getActualToDate())

                {

                    this.updateReportLineBalance(tmpReportLine, -1, inventTable, inventView);

                }

                else

                {

                    this.updateReportLinePL(tmpReportLine, inventTable, inventView);

                }

                this.updateReportLine(tmpReportLine);

            }

        }

    }

}