12. August 2019 10:57
MakeOrder - OnAction()
IF ApprovalsMgmt.PrePostApprovalCheckSales(Rec) THEN
CODEUNIT.RUN(CODEUNIT::"Sales-Quote to Order (Yes/No)",Rec)
ELSE IF
FORMAT(TotalSalesLine.CALCSUMS("Line Amount")) < FORMAT(MinOrderAmount.MinAmountToOrder) THEN
ERROR('Zeilenbetrag unter %1.', MinOrderAmount.MinAmountToOrder);
12. August 2019 12:14
Kowa hat geschrieben:Daher bitten wir dich, vor und nach deinem Quelltext diese Code-Tags einzufügen. Beispiel:
[code]Dein Quelltext[/code]
12. August 2019 12:35
12. August 2019 14:11
Kowa hat geschrieben:Dann fehlt für den Debitordatensatz das GET.
MakeOrder - OnAction()
GET(MinOrderAmount.MinAmountToOrder);
IF TotalSalesLine."Line Amount" < MinOrderAmount.MinAmountToOrder THEN
ERROR('Zeilenbetrag unter %1.', MinOrderAmount.MinAmountToOrder)
ELSE IF
ApprovalsMgmt.PrePostApprovalCheckSales(Rec) THEN
CODEUNIT.RUN(CODEUNIT::"Sales-Quote to Order (Yes/No)",Rec);
12. August 2019 14:21
12. August 2019 14:31
fiddi hat geschrieben:Stell doch mal die Beziehungen zwischen den Tabellen dar.
12. August 2019 14:37
12. August 2019 14:51
fiddi hat geschrieben:Von welchem Debitor möchtest du denn jetzt den Mindestbestellwert wissen? "Verkauf-an" oder "Rechnung-an" ?
12. August 2019 15:07
MakeOrder - OnAction()
if Customer.GET("Sell-to Customer NO.") then begin
TotalSalesLine.SETRANGE("Document Type","Document Type");
TotalsalesLine.SETRANGE("Document No.","No.");
TotalsalesLine.CALCSUMS("Line Amount");
IF TotalSalesLine."Line Amount" < Customer.MinAmountToOrder THEN
ERROR('Zeilenbetrag unter %1.', Customer.MinAmountToOrder)
ELSE IF
ApprovalsMgmt.PrePostApprovalCheckSales(Rec) THEN
CODEUNIT.RUN(CODEUNIT::"Sales-Quote to Order (Yes/No)",Rec);
END;
12. August 2019 15:11
fiddi hat geschrieben:da hat sich Kowa leider geirrt, da du mit REC arbeitest, musst du keinen GET durchführen.
12. August 2019 15:26
Mit dem REC vom Verkaufskopf. Ohne GET mit der entsprechenden Nummer wird der Customerrecord nicht vorhanden sein.
12. August 2019 15:38
fiddi hat geschrieben:dann würde dein Code ungefähr so aussehen:
- Code:
MakeOrder - OnAction()
if Customer.GET("Sell-to Customer NO.") then begin
TotalSalesLine.SETRANGE("Document Type","Document Type");
TotalsalesLine.SETRANGE("Document No.","No.");
TotalsalesLine.CALCSUMS("Line Amount");
IF TotalSalesLine."Line Amount" < Customer.MinAmountToOrder THEN
ERROR('Zeilenbetrag unter %1.', Customer.MinAmountToOrder)
ELSE IF
ApprovalsMgmt.PrePostApprovalCheckSales(Rec) THEN
CODEUNIT.RUN(CODEUNIT::"Sales-Quote to Order (Yes/No)",Rec);
END;
fiddi hat geschrieben:Und du bist dir sicher, das du kein Angebot in einen Auftrag wandeln können willst, wenn der Mindestbestellwert nicht erreicht ist?
12. August 2019 15:50
fiddi hat geschrieben:Da er in der Page 41 Sales Quote ist, sollte REC normalerweise auf einen gültigen SalesHeader zeigen
12. August 2019 15:56
Ja, was aber nicht ausreicht, wenn man ein Feld aus der Debitorentabelle auswerten muss. In deinem Beispielcode ist doch auch das Customer.GET(…) vorhanden, ohne das es nicht geht.
14. August 2019 13:53
MakeOrder - OnAction()
IF Customer.GET("Sell-to Customer No.") THEN BEGIN
SalesLine.SETRANGE("Document Type","Document Type");
SalesLine.SETRANGE("Document No.","No.");
SalesLine.CALCSUMS("Line Amount");
IF SalesLine."Line Amount" < Customer.MinAmountToOrder THEN
IF SalesLine.FINDLAST THEN
NextLineNo := SalesLine."Line No." + 10000
ELSE
NextLineNo := 10000;
SalesLine.INIT;
SalesLine."Line No." := NextLineNo;
SalesLine.Type := SalesLine.Type::Resource;
SalesLine.VALIDATE("No.",'1100');
SalesLine.Quantity := 1;
SalesLine.CALCSUMS("Line Amount");
TotalFee := (Customer.MinAmountToOrder - SalesLine."Line Amount");
SalesLine."Unit Price" := TotalFee;
SalesLine.INSERT;
MESSAGE('Der Mindestbestellwert von %1€ wurde nicht erreicht! \ Der Restbetrag in Höhe von %2€ wurde als Bearbeitungsgebühr hinzugefügt.', Customer.MinAmountToOrder, TotalFee)
END;IF
ApprovalsMgmt.PrePostApprovalCheckSales(Rec) THEN
CODEUNIT.RUN(CODEUNIT::"Sales-Quote to Order (Yes/No)",Rec);
14. August 2019 14:16
MakeOrder - OnAction()
IF Customer.GET("Sell-to Customer No.") THEN BEGIN
SalesLine.SETRANGE("Document Type","Document Type");
SalesLine.SETRANGE("Document No.","No.");
SalesLine.CALCSUMS("Line Amount");
IF SalesLine."Line Amount" < Customer.MinAmountToOrder THEN
IF SalesLine.FINDLAST THEN
NextLineNo := SalesLine."Line No." + 10000
ELSE
NextLineNo := 10000;
SalesLine.INIT;
// Theoretisch sollte es ohne die beiden Zuweisungen funktionieren. sicher ist sicher
SalesLine."Document Type" := "Document Type";
SalesLine."Document No.":="No.";
SalesLine."Line No." := NextLineNo;
SalesLine.INSERT; // Erst einfügen, weil das Validate der No. unter Umständen einen bestehenden Datensatz benötigt.
SalesLine.Type := SalesLine.Type::Resource;
SalesLine.VALIDATE("No.",'1100');
SalesLine.Quantity := 1;
SalesLine.CALCSUMS("Line Amount");
TotalFee := (Customer.MinAmountToOrder - SalesLine."Line Amount");
SalesLine."Unit Price" := TotalFee;
SalesLine.MODIFY;
MESSAGE('Der Mindestbestellwert von %1€ wurde nicht erreicht! \ Der Restbetrag in Höhe von %2€ wurde als Bearbeitungsgebühr hinzugefügt.', Customer.MinAmountToOrder, TotalFee)
END;IF
ApprovalsMgmt.PrePostApprovalCheckSales(Rec) THEN
CODEUNIT.RUN(CODEUNIT::"Sales-Quote to Order (Yes/No)",Rec);
14. August 2019 15:18
m_schneider hat geschrieben:
- Code:
MakeOrder - OnAction()
IF Customer.GET("Sell-to Customer No.") THEN BEGIN
SalesLine.SETRANGE("Document Type","Document Type");
SalesLine.SETRANGE("Document No.","No.");
SalesLine.CALCSUMS("Line Amount");
IF SalesLine."Line Amount" < Customer.MinAmountToOrder THEN
IF SalesLine.FINDLAST THEN
NextLineNo := SalesLine."Line No." + 10000
ELSE
NextLineNo := 10000;
SalesLine.INIT;
// Theoretisch sollte es ohne die beiden Zuweisungen funktionieren. sicher ist sicher
SalesLine."Document Type" := "Document Type";
SalesLine."Document No.":="No.";
SalesLine."Line No." := NextLineNo;
SalesLine.INSERT; // Erst einfügen, weil das Validate der No. unter Umständen einen bestehenden Datensatz benötigt.
SalesLine.Type := SalesLine.Type::Resource;
SalesLine.VALIDATE("No.",'1100');
SalesLine.Quantity := 1;
SalesLine.CALCSUMS("Line Amount");
TotalFee := (Customer.MinAmountToOrder - SalesLine."Line Amount");
SalesLine."Unit Price" := TotalFee;
SalesLine.MODIFY;
MESSAGE('Der Mindestbestellwert von %1€ wurde nicht erreicht! \ Der Restbetrag in Höhe von %2€ wurde als Bearbeitungsgebühr hinzugefügt.', Customer.MinAmountToOrder, TotalFee)
END;IF
ApprovalsMgmt.PrePostApprovalCheckSales(Rec) THEN
CODEUNIT.RUN(CODEUNIT::"Sales-Quote to Order (Yes/No)",Rec);
14. August 2019 16:37
MakeOrder - OnAction()
IF Customer.GET("Sell-to Customer No.") THEN BEGIN
SalesLine.SETRANGE("Document Type","Document Type");
SalesLine.SETRANGE("Document No.","No.");
SalesLine.CALCSUMS("Line Amount");
IF SalesLine."Line Amount" < Customer.MinAmountToOrder THEN BEGIN // Begin hat gefehlt
IF SalesLine.FINDLAST THEN
NextLineNo := SalesLine."Line No." + 10000
ELSE
NextLineNo := 10000;
SalesLine.INIT;
// Theoretisch sollte es ohne die beiden Zuweisungen funktionieren. sicher ist sicher
SalesLine."Document Type" := "Document Type";
SalesLine."Document No.":="No.";
SalesLine."Line No." := NextLineNo;
SalesLine.INSERT; // Erst einfügen, weil das Validate der No. unter Umständen einen bestehenden Datensatz benötigt.
SalesLine.Type := SalesLine.Type::Resource;
SalesLine.VALIDATE("No.",'1100');
SalesLine.Quantity := 1;
SalesLine.CALCSUMS("Line Amount");
TotalFee := (Customer.MinAmountToOrder - SalesLine."Line Amount");
SalesLine."Unit Price" := TotalFee;
SalesLine.MODIFY;
MESSAGE('Der Mindestbestellwert von %1€ wurde nicht erreicht! \ Der Restbetrag in Höhe von %2€ wurde als Bearbeitungsgebühr hinzugefügt.', Customer.MinAmountToOrder, TotalFee)
END;
END;
IF ApprovalsMgmt.PrePostApprovalCheckSales(Rec) THEN
CODEUNIT.RUN(CODEUNIT::"Sales-Quote to Order (Yes/No)",Rec);
15. August 2019 08:38
m_schneider hat geschrieben:Du hast ein Begin End vergessen.