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;

}