I have a codeunit with several functions that calculates a minimum price according to certain costs, and then inserts in the table Sales Line.
I corrected some functions who calculated some costs, is there any way to rerun this codeunit for the current year of 2017 to correct possible errors previously calculated and inserted in the table sales line.
I thought I'd create a report to run the code unit but I do not know how.
Here is the main function with in the codeunit:
GetPVmin(VAR SalesLine : Record "Sales Line";ShipAgent : Code[20];Contacto : Code[20];ShipPostCode : Code[20];Country : Code[10]) : Decimal
SalesLine.SETFILTER(Type,'<>0');
IF SalesLine.FINDSET THEN
BEGIN
IF SalesLine."Document Type"<>SalesLine."Document Type"::Order THEN
EXIT;
ltcontact.GET(Contacto);
IF NOT ltTabDiv.GET('RUBCUSTO',0,'TAXAJURO') THEN
EXIT;
ltLocation.GET(SalesLine."Location Code");
IF ltLocation."Country/Region Code"='' THEN
ltLocation."Country/Region Code":='PT';
IF Country='' THEN
Country:='PT';
KgTotais:=0;
distancia:=GetDist(ltLocation."Post Code",ShipPostCode,ltLocation."Country/Region Code",Country);
REPEAT
IF NOT SalesLine."Item Container" THEN
KgTotais+=SalesLine.Quantity
ELSE
BEGIN
ltValueEntry."Entry No.":=SalesLine."Attached to Line No.";
ltValueEntry."Item No.":=SalesLine."No.";
ltValueEntry."Valued Quantity":=SalesLine.Quantity;
ltValueEntry.INSERT;
END;
UNTIL SalesLine.NEXT=0;
SalesLine.SETRANGE("Item Container",FALSE);
//roliveira 2017-10-04 begin
VVasilhame:=0;
IF SalesLine.FINDSET THEN
REPEAT
SalesLine2:=SalesLine;
SalesLine.SETRANGE("Item Container");
SalesLine.SETRANGE("Document Type", SalesLine."Document Type");
SalesLine.SETFILTER("Document No.", SalesLine."Document No.");
SalesLine.SETRANGE("Attached to Line No.", SalesLine."Line No.");
QProduto:=0;
QVasilhame:=0;
IF SalesLine.FINDFIRST THEN
BEGIN
QProduto:=SalesLine2.Quantity;
QVasilhame:=SalesLine.Quantity;
END;
IF QVasilhame<>0 THEN
VVasilhame:=QProduto/QVasilhame
ELSE
VVasilhame:=1;
SalesLine.SETRANGE("Attached to Line No.");
SalesLine.SETRANGE("Item Container",FALSE);
SalesLine.GET(SalesLine2."Document Type",SalesLine2."Document No.",SalesLine2."Line No.");
SalesLine."Custo Operação":=GetCustoOperacao(SalesLine."No.",SalesLine."Variant Code")/VVasilhame;
IF SalesLine."Codigo Vasilhame"<>'' THEN
BEGIN
SalesLine."Custo Vasilhame":=GetCustoVasilhame(SalesLine."Codigo Vasilhame",0,SalesLine."Vasilhame Devolver")/VVasilhame;
END;
SalesLine."Custo Stock":=GetCustoStock(SalesLine."No.");
SalesLine."Custo Fornecedor":=GetCustoFornecedor(SalesLine."No.");
SalesLine."Custo Transporte":=GetCustoTransporte(ShipAgent,ltLocation.Code,KgTotais,distancia,COPYSTR(ShipPostCode,1,2));
SalesLine."Custo Transferencia":=GetCustoTransferencia(ltLocation.Code);
ltitem.GET(SalesLine."No.");
SalesLine."Unit Cost":=ltitem."Unit Cost";
SalesLine."PV Minimo":=(ltitem."Unit Cost"+SalesLine."Custo Operação"+SalesLine."Custo Vasilhame"+SalesLine."Custo Stock"-SalesLine."Custo Fornecedor"+SalesLine."Custo Transporte"+SalesLine."Custo Transferencia")
/(1-ltTabDiv.Custo*GETdiasCliente(Contacto)/365-GetMargemMin(SalesLine."No.",ltcontact.Segmentacao,SalesLine.Quantity));
SalesLine."PV Aconselhado":=(ltitem."Unit Cost"+SalesLine."Custo Operação"+SalesLine."Custo Vasilhame"+SalesLine."Custo Stock"-SalesLine."Custo Fornecedor"+SalesLine."Custo Transporte"+SalesLine."Custo Transferencia")
/(1-ltTabDiv.Custo*GETdiasCliente(Contacto)/365-GetMargemDef(SalesLine."No.",ltcontact.Segmentacao,SalesLine.Quantity));
SalesLine."Custo Cliente":=SalesLine."PV Minimo"*ltTabDiv.Custo*GETdiasCliente(Contacto)/365;
SalesLine.Margem:=GetMargemMin(SalesLine."No.",ltcontact.Segmentacao,SalesLine.Quantity)*SalesLine."PV Minimo";
GetUltimaVenda(SalesLine);
GetUltimaProposta(SalesLine);
SalesLine.MODIFY;
UNTIL SalesLine.NEXT=0;
END;
SalesLine.RESET;
SalesLine.SETRANGE("Document Type",SalesLine."Document Type");
SalesLine.SETRANGE("Document No.",SalesLine."Document No.");
*This post is locked for comments
I have the same question (0)