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
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
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 ?
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;
The logic should be the same to print, please send the code you are using in the report.
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.
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.
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
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;
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.
André Arnaud de Cal...
292,516
Super User 2025 Season 1
Martin Dráb
231,436
Most Valuable Professional
nmaenpaa
101,156