-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCodeunit_0000000064.txt
212 lines (198 loc) · 9.94 KB
/
Codeunit_0000000064.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
OBJECT Codeunit 64 Sales-Get Shipment
{
OBJECT-PROPERTIES
{
Date=09/23/13;
Time=12:00:00 PM;
Version List=NAVW17.10;
}
PROPERTIES
{
TableNo=37;
OnRun=VAR
TempSalesShptLine@1000 : TEMPORARY Record 111;
BEGIN
SalesHeader.GET("Document Type","Document No.");
SalesHeader.TESTFIELD("Document Type",SalesHeader."Document Type"::Invoice);
SalesHeader.TESTFIELD(Status,SalesHeader.Status::Open);
GetNonPrepmtSalesLines(TempSalesShptLine,SalesHeader);
GetShipments.SetSource(TempSalesShptLine);
GetShipments.SetSalesHeader(SalesHeader);
GetShipments.LOOKUPMODE := TRUE;
IF GetShipments.RUNMODAL <> ACTION::Cancel THEN;
END;
}
CODE
{
VAR
Text001@1000 : TextConst 'ENU=The %1 on the %2 %3 and the %4 %5 must be the same.;ESM=El %1 en el %2 %3 y el %4 %5 debe ser el mismo.;FRC=Le %1 de l''%2 %3 et de l''%4 %5 doit ˆtre le mˆme.;ENC=The %1 on the %2 %3 and the %4 %5 must be the same.';
SalesHeader@1001 : Record 36;
SalesLine@1002 : Record 37;
SalesShptHeader@1003 : Record 110;
SalesShptLine@1004 : Record 111;
GetShipments@1005 : Page 5708;
Text002@1007 : TextConst 'ENU=Creating Sales Invoice Lines\;ESM=Creando l¡neas de fra. venta\;FRC=Cr‚ation des lignes de facture vente\;ENC=Creating Sales Invoice Lines\';
Text003@1006 : TextConst 'ENU=Inserted lines #1######;ESM=L¡neas insertadas #1######;FRC=Lignes ins‚r‚es #1######;ENC=Inserted lines #1######';
PROCEDURE CreateInvLines@1(VAR SalesShptLine2@1000 : Record 111);
VAR
Window@1006 : Dialog;
LineCount@1005 : Integer;
TransferLine@1001 : Boolean;
BEGIN
WITH SalesShptLine2 DO BEGIN
SETFILTER("Qty. Shipped Not Invoiced",'<>0');
IF FINDSET THEN BEGIN
SalesLine.LOCKTABLE;
SalesLine.SETRANGE("Document Type",SalesHeader."Document Type");
SalesLine.SETRANGE("Document No.",SalesHeader."No.");
SalesLine."Document Type" := SalesHeader."Document Type";
SalesLine."Document No." := SalesHeader."No.";
Window.OPEN(Text002 + Text003);
REPEAT
LineCount := LineCount + 1;
Window.UPDATE(1,LineCount);
IF SalesShptHeader."No." <> "Document No." THEN BEGIN
SalesShptHeader.GET("Document No.");
TransferLine := TRUE;
IF SalesShptHeader."Currency Code" <> SalesHeader."Currency Code" THEN BEGIN
MESSAGE(
Text001,
SalesHeader.FIELDCAPTION("Currency Code"),
SalesHeader.TABLECAPTION,SalesHeader."No.",
SalesShptHeader.TABLECAPTION,SalesShptHeader."No.");
TransferLine := FALSE;
END;
IF SalesShptHeader."Bill-to Customer No." <> SalesHeader."Bill-to Customer No." THEN BEGIN
MESSAGE(
Text001,
SalesHeader.FIELDCAPTION("Bill-to Customer No."),
SalesHeader.TABLECAPTION,SalesHeader."No.",
SalesShptHeader.TABLECAPTION,SalesShptHeader."No.");
TransferLine := FALSE;
END;
END;
IF TransferLine THEN BEGIN
SalesShptLine := SalesShptLine2;
SalesShptLine.TESTFIELD("VAT Bus. Posting Group",SalesHeader."VAT Bus. Posting Group");
SalesShptLine.InsertInvLineFromShptLine(SalesLine);
IF Type = Type::"Charge (Item)" THEN
GetItemChargeAssgnt(SalesShptLine2,SalesLine."Qty. to Invoice");
END;
UNTIL NEXT = 0;
END;
END;
END;
PROCEDURE SetSalesHeader@2(VAR SalesHeader2@1000 : Record 36);
BEGIN
SalesHeader.GET(SalesHeader2."Document Type",SalesHeader2."No.");
SalesHeader.TESTFIELD("Document Type",SalesHeader."Document Type"::Invoice);
END;
PROCEDURE GetItemChargeAssgnt@5800(VAR SalesShptLine@1000 : Record 111;QtyToInv@1003 : Decimal);
VAR
SalesOrderLine@1001 : Record 37;
ItemChargeAssgntSales@1002 : Record 5809;
BEGIN
WITH SalesShptLine DO
IF SalesOrderLine.GET(SalesOrderLine."Document Type"::Order,"Order No.","Order Line No.")
THEN BEGIN
ItemChargeAssgntSales.LOCKTABLE;
ItemChargeAssgntSales.RESET;
ItemChargeAssgntSales.SETRANGE("Document Type",SalesOrderLine."Document Type");
ItemChargeAssgntSales.SETRANGE("Document No.",SalesOrderLine."Document No.");
ItemChargeAssgntSales.SETRANGE("Document Line No.",SalesOrderLine."Line No.");
IF ItemChargeAssgntSales.FINDFIRST THEN BEGIN
ItemChargeAssgntSales.CALCSUMS("Qty. to Assign");
IF ItemChargeAssgntSales."Qty. to Assign" <> 0 THEN
CopyItemChargeAssgnt(
SalesOrderLine,SalesShptLine,ItemChargeAssgntSales."Qty. to Assign",QtyToInv / ItemChargeAssgntSales."Qty. to Assign");
END;
END;
END;
LOCAL PROCEDURE CopyItemChargeAssgnt@5801(SalesOrderLine@1000 : Record 37;SalesShptLine@1001 : Record 111;QtyToAssign@1002 : Decimal;QtyFactor@1008 : Decimal);
VAR
SalesShptLine2@1003 : Record 111;
SalesLine2@1004 : Record 37;
ItemChargeAssgntSales@1005 : Record 5809;
ItemChargeAssgntSales2@1006 : Record 5809;
InsertChargeAssgnt@1007 : Boolean;
BEGIN
WITH SalesOrderLine DO BEGIN
ItemChargeAssgntSales.SETRANGE("Document Type","Document Type");
ItemChargeAssgntSales.SETRANGE("Document No.","Document No.");
ItemChargeAssgntSales.SETRANGE("Document Line No.","Line No.");
IF ItemChargeAssgntSales.FINDSET THEN
REPEAT
IF ItemChargeAssgntSales."Qty. to Assign" <> 0 THEN BEGIN
ItemChargeAssgntSales2 := ItemChargeAssgntSales;
ItemChargeAssgntSales2."Qty. to Assign" := QtyFactor * ItemChargeAssgntSales2."Qty. to Assign";
SalesLine2.SETRANGE("Shipment No.",SalesShptLine."Document No.");
SalesLine2.SETRANGE("Shipment Line No.",SalesShptLine."Line No.");
IF SalesLine2.FINDSET THEN
REPEAT
SalesLine2.CALCFIELDS("Qty. to Assign");
InsertChargeAssgnt := SalesLine2."Qty. to Assign" <> SalesLine2.Quantity;
UNTIL (SalesLine2.NEXT = 0) OR InsertChargeAssgnt;
IF InsertChargeAssgnt THEN BEGIN
ItemChargeAssgntSales2."Document Type" := SalesLine2."Document Type";
ItemChargeAssgntSales2."Document No." := SalesLine2."Document No.";
ItemChargeAssgntSales2."Document Line No." := SalesLine2."Line No.";
ItemChargeAssgntSales2."Qty. Assigned" := 0;
IF ABS(QtyToAssign) < ABS(ItemChargeAssgntSales2."Qty. to Assign") THEN
ItemChargeAssgntSales2."Qty. to Assign" := QtyToAssign;
IF ABS(SalesLine2.Quantity - SalesLine2."Qty. to Assign") <
ABS(ItemChargeAssgntSales2."Qty. to Assign")
THEN
ItemChargeAssgntSales2."Qty. to Assign" :=
SalesLine2.Quantity - SalesLine2."Qty. to Assign";
ItemChargeAssgntSales2.VALIDATE("Unit Cost");
IF ItemChargeAssgntSales2."Applies-to Doc. Type" = "Document Type" THEN BEGIN
ItemChargeAssgntSales2."Applies-to Doc. Type" := SalesLine2."Document Type";
ItemChargeAssgntSales2."Applies-to Doc. No." := SalesLine2."Document No.";
SalesShptLine2.SETCURRENTKEY("Order No.","Order Line No.");
SalesShptLine2.SETRANGE("Order No.",ItemChargeAssgntSales."Applies-to Doc. No.");
SalesShptLine2.SETRANGE("Order Line No.",ItemChargeAssgntSales."Applies-to Doc. Line No.");
SalesShptLine2.SETRANGE("Document No.",SalesShptLine."Document No.");
IF SalesShptLine2.FINDFIRST THEN BEGIN
SalesLine2.SETCURRENTKEY("Document Type","Shipment No.","Shipment Line No.");
SalesLine2.SETRANGE("Document Type","Document Type"::Invoice);
SalesLine2.SETRANGE("Shipment No.",SalesShptLine2."Document No.");
SalesLine2.SETRANGE("Shipment Line No.",SalesShptLine2."Line No.");
IF SalesLine2.FINDFIRST AND (SalesLine2.Quantity <> 0) THEN
ItemChargeAssgntSales2."Applies-to Doc. Line No." := SalesLine2."Line No."
ELSE
InsertChargeAssgnt := FALSE;
END ELSE
InsertChargeAssgnt := FALSE;
END;
END;
IF InsertChargeAssgnt AND (ItemChargeAssgntSales2."Qty. to Assign" <> 0) THEN BEGIN
ItemChargeAssgntSales2.INSERT;
QtyToAssign := QtyToAssign - ItemChargeAssgntSales2."Qty. to Assign";
END;
END;
UNTIL ItemChargeAssgntSales.NEXT = 0;
END;
END;
PROCEDURE GetNonPrepmtSalesLines@3(VAR TempSalesShptLine@1000 : TEMPORARY Record 111;SalesHeader@1001 : Record 36);
VAR
SalesLine@1002 : Record 37;
BEGIN
SalesShptLine.SETRANGE("Bill-to Customer No.",SalesHeader."Bill-to Customer No.");
SalesShptLine.SETRANGE("Sell-to Customer No.",SalesHeader."Sell-to Customer No.");
SalesShptLine.SETFILTER("Qty. Shipped Not Invoiced",'<>0');
SalesShptLine.SETRANGE("Currency Code",SalesHeader."Currency Code");
SalesShptLine.SETRANGE("Authorized for Credit Card",FALSE);
IF SalesShptLine.FINDSET THEN BEGIN
REPEAT
IF SalesLine.GET(SalesLine."Document Type"::Order,SalesShptLine."Order No.",SalesShptLine."Order Line No.") THEN
IF SalesLine."Prepmt. Line Amount" = 0 THEN BEGIN
TempSalesShptLine := SalesShptLine;
TempSalesShptLine.INSERT;
END;
UNTIL SalesShptLine.NEXT = 0;
END;
END;
BEGIN
END.
}
}