DEV Community

Rohith_Veerapalli
Rohith_Veerapalli

Posted on

GST Calculation

For PO Line

 public static container GstCalculation(RefRecId purchRecid, TableId tableId, refRecId purchLineRecId)
 {
     vendPurchOrderJour                  vendPurchOrderJour;
     PurchLineAllVersions                ObjPurchLineAllVersions;
     ITaxDocument                        taxDocument;
     ITaxDocumentComponentLineEnumerator componentLineEnumerator;
     ITaxDocumentComponentLine           componentLineObject;
     ITaxDocumentMeasureEnumerator       measureEnumerator;

     ITaxDocumentLine                    line;
     ITaxDocumentLineEnumerator          lineEnumerator;

     container                           taxValue;
     TaxComponent_IN                     taxComponent;
     ;

     //vendPurchOrderJour = vendPurchOrderJour::findRecId(VendPurchOrderJour::findByPurchId(purchId).RecId);
     taxDocument = TaxBusinessService::getTaxDocumentBySource( tableId,purchRecid);

     if(taxDocument != null)
     {
         componentLineEnumerator = taxDocument.componentLines();
         lineEnumerator = taxDocument.lines();

         if (taxDocument)
         {
             //lineEnumerator for Current line taxDocument start
             lineEnumerator = taxDocument.lines();
             while(lineEnumerator.moveNext())
             {

                 line = lineEnumerator.current();
                 line.setTaxDocument(taxDocument);
                 if(line.originSourceRecId() != 0 && line.getInvoiceTax().value() != 0 )
                 {

                     while(componentLineEnumerator.moveNext())
                     {
                         componentLineObject = componentLineEnumerator.current();
                         taxComponent = componentLineObject.metaData().taxComponent();

                         if(taxComponent == "CGST")
                         {
                             if( line.sourceRecId() == purchLineRecId)
                             {
                                 taxValue += componentLineObject.getMeasure("Rate").value().value() * 100;
                             }
                             //  taxAmount = componentLineObject.getMeasure("Tax Amount").value().value();
                         }
                         if(taxComponent == "SGST")
                         {
                             if( line.sourceRecId() == purchLineRecId)
                             {
                                 taxValue += componentLineObject.getMeasure("Rate").value().value() * 100;
                             }
                             //   taxAmount = componentLineObject.getMeasure("Tax Amount").value().value();
                             break;
                         }
                         if(taxComponent == "IGST")
                         {

                             if(conLen(taxValue)<1)
                             {
                                 if( line.sourceRecId() == purchLineRecId)
                                 {
                                     taxValue += componentLineObject.getMeasure("Rate").value().value() * 100;
                                 }
                             }
                             // taxAmount = componentLineObject.getMeasure("Tax Amount").value().value();
                             break;
                         }

                     }
                 }
             }
         }
     }
     return taxValue;
 }
Enter fullscreen mode Exit fullscreen mode

For Header level

 public static container GstCalculation(RefRecId purchRecid, TableId tableId)
 {
     vendPurchOrderJour                  vendPurchOrderJour;
     PurchLineAllVersions                ObjPurchLineAllVersions;
     ITaxDocument                        taxDocument;
     ITaxDocumentComponentLineEnumerator componentLineEnumerator;
     ITaxDocumentComponentLine           componentLineObject;
     ITaxDocumentMeasureEnumerator       measureEnumerator;

     ITaxDocumentLine                    line;
     ITaxDocumentLineEnumerator          lineEnumerator;

     container                           taxValue;
     TaxComponent_IN                     taxComponent;
     ;

     //vendPurchOrderJour = vendPurchOrderJour::findRecId(VendPurchOrderJour::findByPurchId(purchId).RecId);
     taxDocument = TaxBusinessService::getTaxDocumentBySource( tableId,purchRecid);

     if(taxDocument != null)
     {
         componentLineEnumerator = taxDocument.componentLines();
         lineEnumerator = taxDocument.lines();

         if (taxDocument)
         {
             //lineEnumerator for Current line taxDocument start
             lineEnumerator = taxDocument.lines();
             while(lineEnumerator.moveNext())
             {

                 line = lineEnumerator.current();
                 line.setTaxDocument(taxDocument);
                 if(line.originSourceRecId() != 0 && line.getInvoiceTax().value() != 0)
                 {

                     while(componentLineEnumerator.moveNext())
                     {
                         componentLineObject = componentLineEnumerator.current();
                         taxComponent = componentLineObject.metaData().taxComponent();

                         if(taxComponent == "CGST")
                         {
                             taxValue += componentLineObject.getMeasure("Rate").value().value() * 100;
                             //  taxAmount = componentLineObject.getMeasure("Tax Amount").value().value();
                         }
                         if(taxComponent == "SGST")
                         {
                             taxValue += componentLineObject.getMeasure("Rate").value().value() * 100;
                             //   taxAmount = componentLineObject.getMeasure("Tax Amount").value().value();
                             break;
                         }
                         if(taxComponent == "IGST")
                         {
                             if(conLen(taxValue)<1)
                             {
                                 taxValue += componentLineObject.getMeasure("Rate").value().value() * 100;
                             }
                             // taxAmount = componentLineObject.getMeasure("Tax Amount").value().value();
                             break;
                         }
                     }
                 }
             }
         }
     }
     return taxValue;
 }
Enter fullscreen mode Exit fullscreen mode

Top comments (0)