Tuesday, February 28, 2023

How to cancel the remaining salesline quantity for invoiced order lines through custom button using standard process

 public final class DaxCancellButton

{        

public static  SalesTable      salesTable;    

public static  SalesLine       salesLine;          

public  static void main(Args _args)    

{               

//FormRun formRun = this.formRun() as formRun;        

salesTable = _args.record();        

DaxCancellButton ss = new DaxCancellButton();        

if(salesTable)       

{           

while select forupdate salesLine where salesTable.SalesId == salesLine.SalesId           

{               

    ttsbegin;

               salesLine.remainSalesPhysical = 0;

               salesLine.remainInventPhysical = 0;             

               ss.closeOk();

            ttscommit;

           }

}     

}      

public void closeOk()    

{       

// SalesLine       callerSalesLine;

  FormDataSource  callerDataSource;     

 //  SalesTable      salestable;        

MCRSalesOrderCancellation mcrSalesOrderCancellation;          

if (isConfigurationkeyEnabled(configurationKeyNum(MCRCallCenter)))        

{

            mcrSalesOrderCancellation = new MCRSalesOrderCancellation();

            mcrSalesOrderCancellation.preCancel(SalesTable::find(salesLine.SalesId));

 }          

try        

{            

SalesUpdateRemain salesUpdateRemain = SalesUpdateRemain::construct();

            boolean updated = salesUpdateRemain.updateDeliverRemainder(salesLine,0,0);

          if (updated)

            {

                if (isConfigurationkeyEnabled(configurationKeyNum(MCRCallCenter)))

                { 

                   salesTable = SalesTable::find(salesLine.SalesId, true);

                    // If sales order is paid by loyalty create the refund loyalty lines and post them as part of this process

                    if (salesTable.SalesStatus != SalesStatus::Canceled)

                    {                       

mcrSalesOrderCancellation.RefundLoyaltyPointsForSalesLine(salesTable, salesLine);

                    }                    mcrSalesOrderCancellation.postCancelAdjPayment(salesTable);

                }

                  Object salesLineDataSource = callerDataSource;

                  //if (formDataSourceHasMethod(salesLineDataSource, identifierStr(salesTable_ds)))

                //{

                //    FormDataSource salesTableDataSource = salesLineDataSource.salesTable_ds();

                //   salesTableDataSource.reread();

                //    salesTableDataSource.refresh();

                //}                 

 //salesLineDataSource.reread();                

//salesLineDataSource.refresh();                

//salesLineDataSource.research(true);

            }

              

//super();       

 }        

catch        

{            

//salesLine.reread();        

}    

}  

}


Wednesday, February 22, 2023

How to get vendor transactions details(debit,credit,openingbalance,closing balance) based on start date and end date

 public void clicked()        

{            

VendTrans               vendTransLoc;            

 VendTable               vendTable;            

DirPartyTable           dirPartyTable;            

DaxLedgerTrailBalance   daxLedgerTrailBalanceloc,daxLedgerTrailBalanceloc1;                     

FormDateControl StartDateloc = this.formRun().design().controlName("StartDate") as FormDateControl;           

FormDateControl EndDateloc = this.formRun().design().controlName("EndDate") as FormDateControl;            

FormComboBoxControl Typeloc = this.formRun().design().controlName("Type") as FormComboBoxControl;                     

super();              

if(Typeloc.selectionChange() == Type::Vendors)            

{                

while  select * from vendTransLoc                    

where vendTransLoc.TransDate >= StartDateloc.dateValue()                    

&& vendTransLoc.TransDate <= EndDateloc.dateValue()                             

{                  

if(vendTransLoc.ReportingCurrencyAmount <0)                

{                    

daxLedgerTrailBalanceloc.AmountDebit = vendTransLoc.ReportingCurrencyAmount;                

}                  

if(vendTransLoc.ReportingCurrencyAmount > 0)                

{                                      

daxLedgerTrailBalanceloc.AmountCredit = vendTransLoc.ReportingCurrencyAmount;                

}                    

daxLedgerTrailBalanceloc.OpeningBalance = vendTransLoc.AmountMST;                    

daxLedgerTrailBalanceloc.MainAccountCategory = vendTransLoc.AccountNum;                    

daxLedgerTrailBalanceloc.EndingBalance = (daxLedgerTrailBalanceloc.OpeningBalance + daxLedgerTrailBalanceloc.AmountDebit)-daxLedgerTrailBalanceloc.AmountCredit;                    

vendTable.Party = vendTable::find(vendTransLoc.AccountNum).Party;                    

dirPartyTable.Name = dirPartyTable::findRec(vendTable.Party).Name;                    

daxLedgerTrailBalanceloc.PrimaryFocusDescription = dirPartyTable.Name;                    

daxLedgerTrailBalanceloc.insert();              

}                           

}                              

}


Sunday, February 19, 2023

How to pass range for multiselected values in lookup

container con1;                

con1=str2con(Productnumber.valueStr(),";",false);//split values into container                

for(int c=1; c<=conLen(con1);c++)                

{                     

    qbds.addRange(fieldNum(EcoResProductVariants,productmaster)).value(conPeek(con1,c));                

}

 

Friday, February 17, 2023

How to get data for customized fields in customer transactions for a journal line after post.

[ExtensionOf(classStr(CustVendVoucher))]

final class DaxCustVendVoucher_Extension

public void post(LedgerVoucher ledgerPostingJournal,

                    CustVendTrans custVendTrans,

                    NoYes approval, 

                    UnknownNoYes euroTriangulation,

                    boolean withHoldTaxType,

                    boolean useSubLedger)

{        

LedgerJournalTrans  ledgerJournalTransLocal;        

VendTrans   vendTransUpdate;        

CustTrans   custTrans;        

Common  commonLocal = common;          

next post(_ledgerPostingJournal, custVendTrans, approval, euroTriangulation, withHoldTaxType, useSubLedger);        

if (commonLocal.TableId == tableNum(LedgerJournalTrans))        

{            

ledgerJournalTransLocal = commonLocal;            

if (custVendTrans.tableid == tableNum(CustTrans))            

{                

ttsbegin;                

select firstonly1 custTrans                

where custTrans.RecId == _custVendTrans.RecId;                

custTrans.selectForUpdate(true);                

custTrans.PaymentDate = ledgerJournalTransLocal.PaymentDate;                

custTrans.doUpdate();                

ttscommit;            

}        

}    

}

similarly, get the data for customized fields in vendor transctions(vend trans) just by placing vend trans table in custtrans  place.

Tuesday, February 7, 2023

How to get Productname of an item in itemarrival journal lines creation

 How to get Productname of an item in itemarrival journal lines creation

[ExtensionOf(tableStr(WMSJournalTrans))]

public final class DaxWMSJournalTransTable_Extension

   public void modifiedField(FieldId fieldId)

    {      

 // InventItemIdLookupSimpleView    item;

    EcoResProductName                     productName;

    InventTable     invent     =         InventTable::find(this.itemId); 

    EcoResProduct   product = EcoResProduct::find(invent.Product);

    productName     = invent.productName(SystemParameters::getSystemLanguageId()); 

    next modifiedField(_fieldId);

    switch (fieldId) 

  {          

    case fieldNum(WMSJournalTrans, itemId):                               

     this.ProductName = product.productName();                

      this.insert();                

    break;        

}    

}  

}