Skip to main content

Notifications

Announcements

No record found.

Community site session details

Community site session details

Session Id :
Microsoft Dynamics NAV (Archived)

Unable to print the item serial no in sale invoice printout

(0) ShareShare
ReportReport
Posted on by 1,865

Dear Experts,

Is there any possibility to show the serial no in sale invoice printout for every item from posted sale invoice.

please suggest me.

*This post is locked for comments

  • Suggested answer
    Suresh Kulla Profile Picture
    Suresh Kulla 44,656 on at
    RE: Unable to print the item serial no in sale invoice printout

    There is lot of code to read, it looks like you are using the function i am using to get the serial no. insert in the TempSalesInvoiceLine table.  Did you run the debugger by using the breakpoint in that function ? Does it finds the item ledger entries for the item ?

  • manish.yadav Profile Picture
    manish.yadav 1,865 on at
    RE: Unable to print the item serial no in sale invoice printout

    Dear Sir,

    Thank you for your reply.

    The complete code is:

    OnInitReport()

    OnPreReport()

    OnPostReport()

    Sales Invoice Header - OnPreDataItem()

    Sales Invoice Header - OnAfterGetRecord()

    //YSR begin*************************************************

    // total Quantity OF Goods begin

         noUnits:=0;

         recSIL.RESET;

         recSIL.SETRANGE("Document No.","No.");

         recSIL.SETRANGE("Don't Print",FALSE);

         IF recSIL.FIND('-') THEN BEGIN

           REPEAT

         decPrice :=0;

       IF recSIL."Unit Price"<>0 THEN

          decPrice := recSIL."Unit Price"

       ELSE

          decPrice := recSIL."Unit Price (Custom)";

           IF ("Payment Terms Code" <> 'PT-040') AND (decPrice=0) THEN BEGIN

           END ELSE BEGIN

             IF noUnits=0 THEN BEGIN

                noUnits+=1;

                arrTxtUnit[noUnits]:=recSIL."Unit of Measure Code";

                arrDecUnits[noUnits]:=recSIL.Quantity;

             END ELSE BEGIN

               boolICFind:=FALSE;

               FOR i := 1 TO noUnits DO BEGIN

                  IF arrTxtUnit[i]=recSIL."Unit of Measure Code" THEN BEGIN

                     boolICFind:=TRUE;

                     arrDecUnits[noUnits]+=recSIL.Quantity;

                  END;

               END;

               IF NOT boolICFind THEN BEGIN

                  noUnits+=1;

                  arrTxtUnit[noUnits]:=recSIL."Unit of Measure Code";

                  arrDecUnits[noUnits]:=recSIL.Quantity;

               END;

           END;

           END;

             UNTIL recSIL.NEXT = 0;

         END;

    txtTotQty:='';

    IF noUnits>0 THEN BEGIN   //

               FOR i := 1 TO noUnits DO BEGIN

                  IF (txtTotQty='') AND (arrDecUnits[i]>0) THEN

                               txtTotQty:=arrTxtUnit[i]+':'+FORMAT(arrDecUnits[i])

                  ELSE IF arrDecUnits[i]>0 THEN

                     txtTotQty+=', '+arrTxtUnit[i]+':'+FORMAT(arrDecUnits[i])

               END;

    END;

    // total Quantity OF Goods end

    //YSR end*************************************************

    recMKUSaleFld.RESET;

    recMKUSaleFld.SETRANGE("Document No.","Order No.");

     IF recMKUSaleFld.FIND('-') THEN BEGIN

         recVendor.RESET;

         recVendor.SETRANGE("No.",recMKUSaleFld.Transporter);

           IF recVendor.FIND('-') THEN BEGIN

              txtTranspoter  :=  recVendor.Name;

           END;

         RecPostCode.RESET;

          RecPostCode.SETRANGE(Code,recMKUSaleFld."Inco terms Destination");

          IF RecPostCode.FIND('-') THEN BEGIN

            txtinvoTemDestination := RecPostCode.City ;

          END;

     END;

         //PPO No begin

      recMKUSaleFld.RESET;

      recMKUSaleFld.SETRANGE("Posted Document No.","No.");

       IF recMKUSaleFld.FIND('-') THEN BEGIN

         recSalesHeader.RESET;

         recSalesHeader.SETRANGE("No.",recMKUSaleFld."Sales Order No.");

           IF recSalesHeader.FIND('-') THEN BEGIN

             recProductionOrderPPO.RESET;

             recProductionOrderPPO.SETRANGE(recProductionOrderPPO."Source Type",recProductionOrderPPO."Source Type"::"Sales Header");

             recProductionOrderPPO.SETRANGE("Source No.",recSalesHeader."No.");

               IF recProductionOrderPPO.FIND('-') THEN BEGIN

                 k+=1;

                 REPEAT

                   txtPpoNo[k] :='';

                   txtPpoNo[k]  += recProductionOrderPPO."No.";

                 UNTIL recProductionOrderPPO.NEXT=0;

               END;

           END;

       END;

      // MESSAGE(txtPpoNo[1]+','+txtPpoNo[2]+','+txtPpoNo[3]+','+txtPpoNo[4]);

         //PPO no end

    txtOptInvoice:=FORMAT(optInvoice);

    recsalesshipheader.RESET;

    recsalesshipheader.SETRANGE("No.","No.");

    IF recsalesshipheader.FIND('-') THEN BEGIN

    END;

    //Location begin

    recLocation.RESET;

    recLocation.SETRANGE(Code,"Sales Invoice Header"."Location Code");

    IF recLocation.FIND('-') THEN BEGIN

       RecPostCode.RESET;

       RecPostCode.SETRANGE(Code,recLocation."Post Code");

       IF RecPostCode.FIND('-') THEN BEGIN

         txtLocCity:= RecPostCode.City;

         recCountryRegion.RESET;

         recCountryRegion.SETRANGE(Code,RecPostCode."Country/Region Code");

         IF recCountryRegion.FIND('-') THEN BEGIN

         txtlocCountry:=recCountryRegion.Name;

         END;

       END;

    END;

    //Location end

    RecSaleInvHeader.RESET;

    RecSaleInvHeader.SETRANGE("Currency Code","Sales Invoice Header"."Currency Code");

    IF RecSaleInvHeader.FIND('-') THEN BEGIN

    txtSHcurrency := "Currency Code";

    END;

    CurrPageNo :=CurrReport.PAGENO;

    recCompanyInformation.RESET;

    recCompanyInformation.FIND('-');

    txtComapnyName:=recCompanyInformation.Name;

    txtCOAddr1:=recCompanyInformation.Address;

    //IF (recCompanyInformation."Address 2"<>'') THEN

     // txtCOAddr1+=', '+recCompanyInformation."Address 2";

    //txtCOAddr1+=', '+recCompanyInformation.City;

    txtCOPhone:='Phone : '+recCompanyInformation."Phone No.";

    txtfax:='Fax: '+recCompanyInformation."Fax No.";

    txtemail:='E-Mail: '+recCompanyInformation."E-Mail";

    txtTINno := recCompanyInformation."T.I.N. No.";

    txtCSTno := recCompanyInformation."C.S.T No.";

    TxtIECNo :=recCompanyInformation."IEC No";

       recCountryRegion.SETRANGE(Code,recCompanyInformation."Country/Region Code");

       IF recCountryRegion.FIND('-') THEN BEGIN

     txtCountryOrigin := recCountryRegion.Name;

       END;

    //  recCompanyInformation."Post Code" + ',' + recCompanyInformation.State + ',' + txtCountryOrigin

    RecShipmentMethod.RESET;

    RecShipmentMethod.SETRANGE(Code,"Sales Invoice Header"."Shipment Method Code");

    IF RecShipmentMethod.FIND('-') THEN BEGIN

    txtShipMode:= RecShipmentMethod.Description;

    END;

    recPaymentTermCode.RESET;

    recPaymentTermCode.SETRANGE(Code,"Sales Invoice Header"."Payment Terms Code");

    IF recPaymentTermCode.FIND('-') THEN BEGIN

    txtpayment:= recPaymentTermCode.Description;

    END;

    RecPostCode.RESET;

    RecPostCode.SETRANGE(Code,recMKUSaleFld."Final Destination");

    IF RecPostCode.FIND('-') THEN BEGIN

    txtinvoTemDestination:= FORMAT(recMKUSaleFld."Inco Terms")+','+txtinvoTemDestination;

    END;

    RecPostCode.RESET;

    RecPostCode.SETRANGE(Code,recMKUSaleFld."Final Destination");

    IF RecPostCode.FIND('-') THEN BEGIN

    txtShipmentTerm:= FORMAT(recMKUSaleFld."Inco Terms")+','+RecPostCode.City;

    txtFinalDestinationCity:=RecPostCode.City;

    END;

    recCountryRegion.RESET;

    recCountryRegion.SETRANGE(Code,"Sales Invoice Header"."Ship-to Country/Region Code");

    IF recCountryRegion.FIND('-') THEN BEGIN

    txtshiptocountry:=recCountryRegion.Name;

    END;

    RecEntryExitPoint.RESET;

    RecEntryExitPoint.SETRANGE(Code,recMKUSaleFld."Port of Loading");

    IF RecEntryExitPoint.FIND('-') THEN BEGIN

    txtPortLoad:=RecEntryExitPoint.Description;

    END;

    RecEntryExitPoint.RESET;

    RecEntryExitPoint.SETRANGE(Code,recMKUSaleFld."Port of Discharge");

    IF RecEntryExitPoint.FIND('-') THEN BEGIN

    txtPortdisc:=RecEntryExitPoint.Description;

    END;

    recCountryRegion.RESET;

    recCountryRegion.SETRANGE(Code,"Sales Invoice Header"."Bill-to Country/Region Code");

    IF recCountryRegion.FIND('-') THEN BEGIN

    txtbilltocountry:=recCountryRegion.Name;

    END;

    recCustomer.RESET;

    recCustomer.SETRANGE("No.","Sales Invoice Header"."Sell-to Customer No.");

    IF recCustomer.FIND('-') THEN BEGIN

    txtphn:=recCustomer."Phone No.";

    txtCfax:=recCustomer."Fax No.";

    END;

     roundamttocust:=ROUND("Sales Invoice Header"."Amount to Customer",1);

    RepMillion.InitTextVariable;

    RepMillion.FormatNoText(NumberText,ROUND("Sales Invoice Header"."Amount to Customer",1),"Sales Invoice Header"."Currency Code");

    //bank

    recBank.RESET;

    recBank.SETRANGE("No.",recMKUSaleFld."Bank Code");

    IF recBank.FIND('-') THEN BEGIN

    textBankCurr:=recBank."Currency Code";

    txtCityState:=recBank.City;

    recCountryRegion.RESET;

    recCountryRegion.SETRANGE(Code,recBank."Country/Region Code");

    IF recCountryRegion.FIND('-') THEN BEGIN

    txtBankCountry:=recCountryRegion.Name;

    END;

    END;

    //txtdate:=dt2date("Sales Invoice Header"."Document Date")

    txtcommission1 :='Commision';

    txtcommission2 :=' - Commission is payable at ';

    txtcommission3 :='% on the pre-tax and pre-shipment amount of this invoice';

       RecPostCode.RESET;

       RecPostCode.SETRANGE(Code,recMKUSaleFld."Final Destination");

       IF RecPostCode.FIND('-') THEN BEGIN

         recCountryRegion.RESET;

         recCountryRegion.SETRANGE(Code,RecPostCode."Country/Region Code");

         IF recCountryRegion.FIND('-') THEN BEGIN

         txtCountryFinalDestination:=recCountryRegion.Name;

         END;

       END;

    //ship-to begin

    RecShiptoAddress.RESET;

    RecShiptoAddress.SETRANGE(RecShiptoAddress."Customer No.","Sales Invoice Header"."Sell-to Customer No."); //tk

    RecShiptoAddress.SETRANGE(RecShiptoAddress.Code,"Sales Invoice Header"."Ship-to Code");

    IF RecShiptoAddress.FINDFIRST THEN BEGIN

       ship2Name:=RecShiptoAddress.Name+' '+RecShiptoAddress."Name 2";

       ship2address:=RecShiptoAddress.Address+' '+RecShiptoAddress."Address 2";

       ship2city:=RecShiptoAddress.City;

       ship2phone:='Phone No: '+RecShiptoAddress."Phone No.";

       ship2fax:='Fax: '+RecShiptoAddress."Fax No.";

     recCountryRegion.SETRANGE(recCountryRegion.Code,RecShiptoAddress."Country/Region Code");

      IF recCountryRegion.FINDFIRST THEN BEGIN

          txtcountr:=recCountryRegion.Name;

     END;

    END;

    //ship-to end

    Sales Invoice Header - OnPostDataItem()

    Sales Invoice Line - OnPreDataItem()

    Sales Invoice Line - OnAfterGetRecord()

    IF ("Sales Invoice Header"."Payment Terms Code" <> 'PT-040') AND (decPrice=0) THEN BEGIN

    END ELSE BEGIN

      intSNo+=1;  

    END;

    recItem.RESET;

    recItem.SETRANGE("No.","No.");

    IF recItem.FIND('-') THEN BEGIN

      //intSNo+=1;

      txtitem:=recItem.Description;

      textdetails:= recItem.Description;

    END;

    //tax

    txtSumDisc:='DISCOUNT'+'    ';

    //item details begin

       RecSize.SETRANGE(Code,recItem.Size);

         IF RecSize.FIND('-') THEN BEGIN

    txtChrsize:= 'Size: ' + RecSize.Description;

         END;

       RecItemStandard.SETRANGE("No.",recItem."Ballistic Standard");

         IF RecItemStandard.FIND('-') THEN BEGIN

    txtChrBstandard:= 'B Standard: ' + RecItemStandard.Description ;

         END;

       RecItemStandard.SETRANGE("No.",recItem."Fragment Standard");

         IF RecItemStandard.FIND('-') THEN BEGIN

    txtChrFstandard:= 'F Standard: ' + RecItemStandard.Description ;

         END;

       RecItemStandard.SETRANGE("No.",recItem."Stab Standard");

         IF RecItemStandard.FIND('-') THEN BEGIN

    txtChrSstandard:= 'S Standard: ' + RecItemStandard.Description ;

         END;

       recProtectionLevel.SETRANGE(Code,recItem."Ballistic Threat Level");

         IF recProtectionLevel.FIND('-') THEN BEGIN

    txtChrBTlevel:= 'BT Level: ' + recProtectionLevel.Description ;

         END;

       recProtectionLevel.SETRANGE(Code,recItem."Stab Threat Level");

         IF recProtectionLevel.FIND('-') THEN BEGIN

    txtChrSTlevel:= 'ST Level: ' + recProtectionLevel.Description ;

         END;

       recProtectionLevel.SETRANGE(Code,recItem."V50 (m/s)");

         IF recProtectionLevel.FIND('-') THEN BEGIN

    txtChrV50:= 'V50: ' + recProtectionLevel.Description ;

         END;

       RecProductGroup.SETRANGE(Code,recItem."Product Group Code");

       IF RecProductGroup.FIND('-') THEN BEGIN

    txtChrPgroupCode:=RecProductGroup.Description;

       END;

    //item details end

    //comment begin

    RecSalesComntLine.RESET;

    RecSalesComntLine.SETRANGE("No.","Sales Invoice Line"."Document No.");

    RecSalesComntLine.SETRANGE("Document Line No.","Sales Invoice Line"."Line No.");

    IF RecSalesComntLine.FIND('-') THEN BEGIN

    REPEAT

    txtcomnt := txtcomnt+ ' '+RecSalesComntLine.Comment;

    //MESSAGE(txtcomnt);

    UNTIL RecSalesComntLine.NEXT=0;

    END;

    //comment end

    //***************************************************************************//

    //!!--------------------------------Tax Begin--------------------------------!!

    //***************************************************************************//

    recSalesInvLine.RESET;

    recSalesInvLine.SETRANGE("Document No.","Sales Invoice Header"."No.");

    IF recSalesInvLine.FIND('-') THEN

    REPEAT

      TOTQTY+= recSalesInvLine.Quantity;

      decexcise  += recSalesInvLine."Excise Amount";

      decBED += recSalesInvLine."BED Amount";

      deceCess+= recSalesInvLine."eCess Amount";

      decSHECess+=recSalesInvLine."SHE Cess Amount";

      decBCDAmt += recSalesInvLine."BCD Amount";

      //decTaxBaseAmt += recSalesInvLine."Tax Base Amount";

      decTaxBaseAmt += recSalesInvLine."Tax Amount";

      decSedAmt +=recSalesInvLine."SED Amount";

      cdexpG := recSalesInvLine."Excise Bus. Posting Group";

      cdexbusp :=  recSalesInvLine."Excise Prod. Posting Group";

    UNTIL recSalesInvLine.NEXT =0;

    "Sales Invoice Header".CALCFIELDS("Sales Invoice Header"."Amount to Customer");

    recSalesInvLine.RESET;

    recSalesInvLine.SETRANGE("Document No.","Sales Invoice Header"."No.");

    recSalesInvLine.SETFILTER(Type,'<>%1',recSalesInvLine.Type::" ");

    IF recSalesInvLine.FIND('-') THEN;

    recPostStruOrdDetail.RESET;

    recPostStruOrdDetail.SETRANGE(recPostStruOrdDetail."Document Type",recPostStruOrdDetail."Document Type"::Invoice);

    recPostStruOrdDetail.SETRANGE(recPostStruOrdDetail."No.","Sales Invoice Header"."No.");

    IF recPostStruOrdDetail.FIND('-') THEN BEGIN

    REPEAT

    //!!--------TKexcise begin------------!!

       IF recPostStruOrdDetail."Tax/Charge Type" = recPostStruOrdDetail."Tax/Charge Type"::Excise THEN BEGIN

          recExPostSetup.RESET;

          recExPostSetup.SETRANGE(recExPostSetup."Excise Bus. Posting Group",cdexpG);

          recExPostSetup.SETRANGE(recExPostSetup."Excise Prod. Posting Group",cdexbusp);

          IF recExPostSetup.FIND('-') THEN BEGIN

          TxtBEDPR:= recExPostSetup."BED %";

          TXTCVDPR:= recExPostSetup."SED %";

          TxtEDcess:=recExPostSetup."eCess %";

          TxtShecess:=recExPostSetup."SHE Cess %";

          END;

       IF decBED <> 0  THEN BEGIN

           i += 1;

           IF  cdexpG <> 'EOU' THEN

             txtChType[i] := 'BED @'  +FORMAT(TxtBEDPR)+ '%'

           ELSE

             txtChType[i] := 'BCD @'  +FORMAT(TxtBEDPR)+ '%';

           txtChValue[i]:= decBED;//decBED + deceCess + decSHECess + decBCDAmt;

      END;

      IF decSedAmt <> 0  THEN BEGIN

           i += 1;

           txtChType[i] := 'CVD @'  +FORMAT(TXTCVDPR)+ '%';

           txtChValue[i]:= decSedAmt;//decBED + deceCess + decSHECess + decBCDAmt;

      END;

      IF  deceCess <> 0  THEN BEGIN

           i += 1;

           txtChType[i] := 'Ed. Cess @'  +FORMAT(TxtEDcess)+ '%';                     ///E-Cess To Ed. Cess

           txtChValue[i]:=  deceCess;//decBED + deceCess + decSHECess + decBCDAmt;

      END;

      IF  decSHECess <> 0  THEN BEGIN

           i += 1;

           txtChType[i] := 'Sh. Ed. Cess  @'  +FORMAT(TxtShecess)+ '%';               ///SHE Cess To Sh. Ed. Cess

           txtChValue[i]:=  decSHECess;//decBED + deceCess + decSHECess + decBCDAmt;

      END;

      END;  

    //!!--------TKexcise end--------------!!

    //!!--------sales tax begin---------!!

      IF recPostStruOrdDetail."Tax/Charge Type" = recPostStruOrdDetail."Tax/Charge Type"::"Sales Tax" THEN BEGIN

         recTaxAreaLine.RESET;

         recTaxAreaLine.SETRANGE(recTaxAreaLine."Tax Area",recSalesInvLine."Tax Area Code");

         IF recTaxAreaLine.FIND('-') THEN

          REPEAT

          recTaxDetail.RESET;

          recTaxDetail.SETCURRENTKEY(recTaxDetail."Tax Jurisdiction Code");

          recTaxDetail.SETRANGE(recTaxDetail."Tax Jurisdiction Code",recTaxAreaLine."Tax Jurisdiction Code");

          recTaxDetail.SETRANGE(recTaxDetail."Tax Group Code",recSalesInvLine."Tax Group Code");

          recTaxDetail.SETRANGE(recTaxDetail."Form Code","Sales Invoice Header"."Form Code");

          IF recTaxDetail.FIND('-') THEN BEGIN

           i += 1;

           IF recTaxJur.GET(recTaxDetail."Tax Jurisdiction Code") THEN;

           IF recTaxDetail."Form Code" <> '' THEN

            txtChType[i] := recTaxJur."Tax Component"+' @'+FORMAT(recTaxDetail."Tax Below Maximum")+'%'+' Against'+recTaxDetail."Form Code"

           ELSE

            txtChType[i] := recTaxJur."Tax Component"+' @'+FORMAT(recTaxDetail."Tax Below Maximum")+'%';

           recglsetup.GET;

           txtChValue[i] := ROUND(decTaxBaseAmt*(recTaxDetail."Tax Below Maximum"/100),recglsetup."VAT Rounding Precision");

          END;

          UNTIL recTaxAreaLine.NEXT = 0;

          END;

         UNTIL recPostStruOrdDetail.NEXT=0;

        END;

    //!!--------sales tax end---------!!

    //!!--------charges begin---------!!

    //!!--------charges end---------!!

    decTaxChargeGroup1 := 0;

    decTaxChargeGroup2 := 0;

    decTaxChargeGroup3 := 0;

    decTaxChargeGroup4 := 0;

    decTaxChargeGroup5 := 0;

    decTaxChargeGroup6 := 0;

    decTaxChargeGroup7 := 0;

    txtTaxChargeGroup1 := '' ;

    txtTaxChargeGroup2 := '' ;

    txtTaxChargeGroup3 := '';

    txtTaxChargeGroup4 := '';

    txtTaxChargeGroup5 := '';

    txtTaxChargeGroup6 := '';

    txtTaxChargeGroup7 := '';

    RecPostStructureOrderLineDetails.RESET;

    RecPostStructureOrderLineDetails.SETRANGE(RecPostStructureOrderLineDetails."Invoice No.","Sales Invoice Line"."Document No.");

    RecPostStructureOrderLineDetails.SETRANGE(RecPostStructureOrderLineDetails.Type,RecPostStructureOrderLineDetails.Type::Sale);

    RecPostStructureOrderLineDetails.SETRANGE(RecPostStructureOrderLineDetails."Document Type",RecPostStructureOrderLineDetails."Document Type"::Invoice);

    IF RecPostStructureOrderLineDetails.FIND('-') THEN BEGIN

      REPEAT

      IF (RecPostStructureOrderLineDetails."Tax/Charge Type"=RecPostStructureOrderLineDetails."Tax/Charge Type"::Charges) AND

         (RecPostStructureOrderLineDetails."Calculation Order"=1) AND (RecPostStructureOrderLineDetails."Calculation Value"<>0) THEN BEGIN

    IF (RecPostStructureOrderLineDetails."Tax/Charge Code" <> '') AND (RecPostStructureOrderLineDetails."Tax/Charge Group" <>'') THEN

                 recTaxChargeGroupdeatail.GET(RecPostStructureOrderLineDetails."Tax/Charge Group",RecPostStructureOrderLineDetails."Tax/Charge Code");

         decTaxChargeGroup1 := ROUND(RecPostStructureOrderLineDetails."Calculation Value",0.01);

         txtTaxChargeGroup1 := recTaxChargeGroupdeatail.Description ;  // + '          ' + FORMAT(decTaxChargeGroup1) ;

      END ELSE BEGIN

      IF (RecPostStructureOrderLineDetails."Tax/Charge Type"=RecPostStructureOrderLineDetails."Tax/Charge Type"::Charges) AND

         (RecPostStructureOrderLineDetails."Calculation Order"=2) AND (RecPostStructureOrderLineDetails."Calculation Value"<>0) THEN BEGIN

    IF (RecPostStructureOrderLineDetails."Tax/Charge Code" <> '') AND (RecPostStructureOrderLineDetails."Tax/Charge Group" <>'') THEN

                 recTaxChargeGroupdeatail.GET(RecPostStructureOrderLineDetails."Tax/Charge Group",RecPostStructureOrderLineDetails."Tax/Charge Code");

         decTaxChargeGroup2 := ROUND(RecPostStructureOrderLineDetails."Calculation Value",0.01);

         txtTaxChargeGroup2 := recTaxChargeGroupdeatail.Description ;    //+ '          ' + FORMAT(decTaxChargeGroup2);

      END ELSE BEGIN

      IF (RecPostStructureOrderLineDetails."Tax/Charge Type"=RecPostStructureOrderLineDetails."Tax/Charge Type"::Charges) AND

         (RecPostStructureOrderLineDetails."Calculation Order"=3) AND (RecPostStructureOrderLineDetails."Calculation Value"<>0) THEN BEGIN

    IF (RecPostStructureOrderLineDetails."Tax/Charge Code" <> '') AND (RecPostStructureOrderLineDetails."Tax/Charge Group" <>'') THEN

                 recTaxChargeGroupdeatail.GET(RecPostStructureOrderLineDetails."Tax/Charge Group",RecPostStructureOrderLineDetails."Tax/Charge Code");

          decTaxChargeGroup3 := ROUND(RecPostStructureOrderLineDetails."Calculation Value",0.01);

          txtTaxChargeGroup3 := recTaxChargeGroupdeatail.Description  ;//+ '          ' + FORMAT(decTaxChargeGroup3);

       END ELSE BEGIN

      IF (RecPostStructureOrderLineDetails."Tax/Charge Type"=RecPostStructureOrderLineDetails."Tax/Charge Type"::Charges) AND

         (RecPostStructureOrderLineDetails."Calculation Order"=4) AND (RecPostStructureOrderLineDetails."Calculation Value"<>0) THEN BEGIN

    IF (RecPostStructureOrderLineDetails."Tax/Charge Code" <> '') AND (RecPostStructureOrderLineDetails."Tax/Charge Group" <>'') THEN

                 recTaxChargeGroupdeatail.GET(RecPostStructureOrderLineDetails."Tax/Charge Group",RecPostStructureOrderLineDetails."Tax/Charge Code");

         decTaxChargeGroup4 := ROUND(RecPostStructureOrderLineDetails."Calculation Value",0.01);

         txtTaxChargeGroup4 := recTaxChargeGroupdeatail.Description ;//+ '          ' + FORMAT(decTaxChargeGroup4);

      END ELSE BEGIN

      IF (RecPostStructureOrderLineDetails."Tax/Charge Type"=RecPostStructureOrderLineDetails."Tax/Charge Type"::Charges) AND

         (RecPostStructureOrderLineDetails."Calculation Order"=5) AND (RecPostStructureOrderLineDetails."Calculation Value"<>0) THEN BEGIN

    IF (RecPostStructureOrderLineDetails."Tax/Charge Code" <> '') AND (RecPostStructureOrderLineDetails."Tax/Charge Group" <>'') THEN

                 recTaxChargeGroupdeatail.GET(RecPostStructureOrderLineDetails."Tax/Charge Group",RecPostStructureOrderLineDetails."Tax/Charge Code");

          decTaxChargeGroup5 := ROUND(RecPostStructureOrderLineDetails."Calculation Value",0.01);

          txtTaxChargeGroup5 := recTaxChargeGroupdeatail.Description  ;//+ '          ' + FORMAT(decTaxChargeGroup5);

       END ELSE BEGIN

      IF (RecPostStructureOrderLineDetails."Tax/Charge Type"=RecPostStructureOrderLineDetails."Tax/Charge Type"::Charges) AND

         (RecPostStructureOrderLineDetails."Calculation Order"=6) AND (RecPostStructureOrderLineDetails."Calculation Value"<>0) THEN BEGIN

    IF (RecPostStructureOrderLineDetails."Tax/Charge Code" <> '') AND (RecPostStructureOrderLineDetails."Tax/Charge Group" <>'') THEN

                 recTaxChargeGroupdeatail.GET(RecPostStructureOrderLineDetails."Tax/Charge Group",RecPostStructureOrderLineDetails."Tax/Charge Code");

         decTaxChargeGroup6 := ROUND(RecPostStructureOrderLineDetails."Calculation Value",0.01) ;

         txtTaxChargeGroup6 := recTaxChargeGroupdeatail.Description  ;//+ '          ' + FORMAT(decTaxChargeGroup6);

       END ELSE BEGIN

      IF (RecPostStructureOrderLineDetails."Tax/Charge Type"=RecPostStructureOrderLineDetails."Tax/Charge Type"::Charges) AND

         (RecPostStructureOrderLineDetails."Calculation Order"=7) AND (RecPostStructureOrderLineDetails."Calculation Value"<>0) THEN  BEGIN

    IF (RecPostStructureOrderLineDetails."Tax/Charge Code" <> '') AND (RecPostStructureOrderLineDetails."Tax/Charge Group" <>'') THEN

                 recTaxChargeGroupdeatail.GET(RecPostStructureOrderLineDetails."Tax/Charge Group",RecPostStructureOrderLineDetails."Tax/Charge Code");

          decTaxChargeGroup7 := ROUND(RecPostStructureOrderLineDetails."Calculation Value",0.01);

          txtTaxChargeGroup7 := recTaxChargeGroupdeatail.Description  ;//+ '          ' + FORMAT(decTaxChargeGroup7);

       END;

      END;

      END;

      END;

      END;

      END;

      END;

      UNTIL RecPostStructureOrderLineDetails.NEXT= 0 ;

    END;

    GetSerialLotNo;

    //***************************************************************************//

    //!!--------------------------------Tax End----------------------------------!!

    //***************************************************************************//

      decPrice :=0;

       IF "Sales Invoice Line"."Unit Price"<>0 THEN

          decPrice := "Sales Invoice Line"."Unit Price"

       ELSE

          decPrice := "Sales Invoice Line"."Unit Price (Custom)";

    //!!--------------------------------For Printing The Serial No----------------------------------!!   // MKY

       {

       //CLEAR(txtSerialNo);

       recILE.SETRANGE("Document No.",recSalesInvLine."Shipment No.");

       recILE.SETRANGE("Item No.",recSalesInvLine."No.");

       IF recILE.FIND('-')  THEN

       REPEAT

        CLEAR(txtSerialNo);

        txtSerialNo +=recILE."Serial No."+',';

       UNTIL recILE.NEXT = 0;

       }

    Sales Invoice Line - OnPostDataItem()

    GetSerialLotNo()

    BEGIN      

         IF TempSalesInvoiceLine.Type <> TempSalesInvoiceLine.Type::Item THEN

           EXIT;

         TempItemLedgEntry.RESET;

         TempItemLedgEntry.DELETEALL;

         InvoiceRowID := TempSalesInvoiceLine.RowID1;

         ValueEntryRelation.RESET;

         ValueEntryRelation.SETCURRENTKEY("Source RowId");

         ValueEntryRelation.SETRANGE("Source RowId",InvoiceRowID);

         IF ValueEntryRelation.FIND('-') THEN BEGIN

           REPEAT

             ValueEntry.GET(ValueEntryRelation."Value Entry No.");

             ItemLedgEntry.GET(ValueEntry."Item Ledger Entry No.");

             TempItemLedgEntry := ItemLedgEntry;

             TempItemLedgEntry.Quantity := ValueEntry."Invoiced Quantity";

             IF TempItemLedgEntry."Entry Type" IN [TempItemLedgEntry."Entry Type"::Purchase,TempItemLedgEntry."Entry Type"::Sale] THEN

               IF TempItemLedgEntry.Quantity <> 0 THEN

                 TempItemLedgEntry.INSERT;

           UNTIL ValueEntryRelation.NEXT = 0;

         END;

         IF TempItemLedgEntry.FINDFIRST THEN

           REPEAT

             SerialLot := TempItemLedgEntry."Serial No." + ' ' + TempItemLedgEntry."Lot No.";

             WITH TempSalesInvoiceLine DO BEGIN

               INIT;

               "Document No." := "Sales Invoice Header"."No.";

               "Line No." := HighestLineNo + 10;

               HighestLineNo := "Line No.";

             END;

             IF STRLEN(SerialLot) + 1 <= MAXSTRLEN(TempSalesInvoiceLine.Description) THEN BEGIN

               TempSalesInvoiceLine.Description := SerialLot;

               TempSalesInvoiceLine."Description 2" := '';

             END ELSE BEGIN

               SpacePointer := MAXSTRLEN(TempSalesInvoiceLine.Description) + 1;

               WHILE (SpacePointer > 1) AND (SerialLot[SpacePointer] <> ' ') DO

                 SpacePointer := SpacePointer - 1;

               IF SpacePointer = 1 THEN

                 SpacePointer := MAXSTRLEN(TempSalesInvoiceLine.Description) + 1;

               TempSalesInvoiceLine.Description := COPYSTR(SerialLot,1,SpacePointer - 1);

                // txtSerialNo:= COPYSTR(SerialLot,1,SpacePointer - 1);

               TempSalesInvoiceLine."Description 2" :=

                 COPYSTR(COPYSTR(SerialLot,SpacePointer + 1),1,MAXSTRLEN(TempSalesInvoiceLine."Description 2"));

             END;

             TempSalesInvoiceLine.INSERT;

           UNTIL TempItemLedgEntry.NEXT = 0;      

       END;

  • Suggested answer
    Suresh Kulla Profile Picture
    Suresh Kulla 44,656 on at
    RE: Unable to print the item serial no in sale invoice printout

    The logic should be the same to print, please send the code you are using in the report.

  • manish.yadav Profile Picture
    manish.yadav 1,865 on at
    RE: Unable to print the item serial no in sale invoice printout

    Hello,

    I have use the functionality there present in link. But our report is customized in 50000 series. I have used the text variable to print the serial/ lot no information. But nothing is printing there. My nav version is 2013. Please give some idea. I have also post the comment on your blog. Please give some suggestion.

  • manish.yadav Profile Picture
    manish.yadav 1,865 on at
    RE: Unable to print the item serial no in sale invoice printout

    Thank you for your fast reply Suresh Ji.

    For your information, we are using the customized report in 50000 series. And my nav version is 2013.

    Your provided code is for version 2015.

    Is there any possibility to use it in my customized report.

    Again Thanks.

  • Suggested answer
    Suresh Kulla Profile Picture
    Suresh Kulla 44,656 on at
    RE: Unable to print the item serial no in sale invoice printout

    Please check this blog where i have shown you how to add it to the report and there is an object to download

    www.navisionworld.com/.../how-to-modify-sales-invoice-report-to.html

  • manish.yadav Profile Picture
    manish.yadav 1,865 on at
    RE: Unable to print the item serial no in sale invoice printout

    Thank you for your reply sir.

    I have develop the code for sale invoice report. The code is below:

    CLEAR(txtSerialNo);
    recILE.SETRANGE("Document No.",recSalesInvLine."Shipment No.");
    IF recILE.FIND('-') THEN
    REPEAT
    txtSerialNo +=recILE."Serial No."+',';
    UNTIL recILE.NEXT = 0;

    6837.uu1.png

    6837.uu1.png

  • Suggested answer
    Amol Salvi Profile Picture
    Amol Salvi 18,694 on at
    RE: Unable to print the item serial no in sale invoice printout

    Hi

    You can show the serial no on sales invoice  by concatenating below the item line ,but it will consume lot of space as well as it will hamper your report performance.

    Suggestion would rather than printing in Invoice report it will better you create another section in report or new report and print serial no against item no which will easier for person to check also when they received the material.

Under review

Thank you for your reply! To ensure a great experience for everyone, your content is awaiting approval by our Community Managers. Please check back later.

Helpful resources

Quick Links

Daivat Vartak – Community Spotlight

We are honored to recognize Daivat Vartak as our March 2025 Community…

Announcing Our 2025 Season 1 Super Users!

A new season of Super Users has arrived, and we are so grateful for the daily…

Kudos to the February Top 10 Community Stars!

Thanks for all your good work in the Community!

Leaderboard

#1
André Arnaud de Calavon Profile Picture

André Arnaud de Cal... 292,516 Super User 2025 Season 1

#2
Martin Dráb Profile Picture

Martin Dráb 231,436 Most Valuable Professional

#3
nmaenpaa Profile Picture

nmaenpaa 101,156

Leaderboard

Featured topics

Product updates

Dynamics 365 release plans