@@ -21,6 +21,20 @@ page 50102 "Erabliere List"
21
21
{
22
22
ApplicationArea = All;
23
23
}
24
+
25
+ field ( "Invoice Customer"; Rec. "Invoice Customer")
26
+ {
27
+ ApplicationArea = All;
28
+ DrillDown = true;
29
+ TableRelation = Customer;
30
+ }
31
+
32
+ field ( "Invoice Contact"; Rec. "Invoice Contact")
33
+ {
34
+ ApplicationArea = All;
35
+ DrillDown = true;
36
+ TableRelation = Contact;
37
+ }
24
38
}
25
39
}
26
40
}
@@ -64,9 +78,57 @@ page 50102 "Erabliere List"
64
78
Dialog . PrettyMessage( ' Nothing to import' ) ;
65
79
end ;
66
80
}
81
+
82
+ action ( CreateInvoice)
83
+ {
84
+ Promoted = true;
85
+ PromotedCategory = Process;
86
+ ApplicationArea = All;
87
+ Caption = ' Create Invoice' ;
88
+
89
+ trigger OnAction()
90
+ var
91
+ result: Boolean ;
92
+ begin
93
+ result := CreateSalesInvoiceWorkflow( True) ;
94
+ if result then
95
+ result := Dialog . PrettyConfirm( ' Do you want to create the invoices?' ) ;
96
+
97
+ if result then
98
+ CreateSalesInvoiceWorkflow( False) ;
99
+ end ;
100
+ }
67
101
}
68
102
}
69
103
104
+ local procedure CreateSalesInvoiceWorkflow( Preview: Boolean ) : Boolean
105
+ var
106
+ ErablieresRec: Record "Erablieres";
107
+ Count : Integer ;
108
+ i: Integer ;
109
+ begin
110
+ i := 1 ;
111
+ if ErablieresRec. FindSet() then begin
112
+ Count := ErablieresRec. Count () ;
113
+ Dialog . Open( Count ) ;
114
+ repeat begin
115
+ if ErablieresRec. "Invoice Customer" <> ' ' then begin
116
+ Dialog . Update( i, ' Creating invoice for ' + ErablieresRec. Description + ' for customer ' + ErablieresRec. "Invoice Contact" + ' .' ) ;
117
+ CreateSalesInvoice( ErablieresRec. "Invoice Customer", Preview) ;
118
+ end
119
+ else
120
+ Dialog . Update( i, ' No customer for ' + ErablieresRec. Description + ' , no invoice created.' ) ;
121
+ Sleep( 100 ) ;
122
+ i += 1 ;
123
+ end until ErablieresRec. Next() = 0 ;
124
+ exit ( true) ;
125
+ end
126
+ else
127
+ Dialog . PrettyMessage( ' Without Erablieres, no invoice can be created' ) ;
128
+
129
+ exit ( false) ;
130
+ end ;
131
+
70
132
local procedure ImportErablieres( var ErabliereRec: Record Erablieres)
71
133
var
72
134
ErablieresArray: JsonArray ;
@@ -118,6 +180,36 @@ page 50102 "Erabliere List"
118
180
end ;
119
181
end ;
120
182
183
+ procedure CreateSalesInvoice( CustomerNo: Code [20 ]; Preview: Boolean )
184
+ var
185
+ SalesHeader: Record "Sales Header";
186
+ SalesLine: Record "Sales Line";
187
+ NoSeriesMgt: Codeunit "NoSeriesManagement";
188
+ InvoiceNo: Code [20 ];
189
+ begin
190
+ // Initialize a new Sales Invoice header
191
+ SalesHeader. Init() ;
192
+ SalesHeader. "Document Type" := SalesHeader. "Document Type"::Invoice;
193
+ SalesHeader. "No." := ' ' ; // No. will be assigned by NoSeriesManagement
194
+ SalesHeader. "Sell-to Customer No." := CustomerNo;
195
+ if not Preview then begin
196
+ SalesHeader. Insert( true) ;
197
+
198
+ // Get the next invoice number from the number series
199
+ InvoiceNo := NoSeriesMgt. GetNextNo( SalesHeader. "No. Series", SalesHeader. "Posting Date", true) ;
200
+ SalesHeader. "No." := InvoiceNo;
201
+ SalesHeader. Modify ( true) ;
202
+
203
+ // Initialize a new Sales Invoice line
204
+ SalesLine. Init() ;
205
+ SalesLine. "Document Type" := SalesLine. "Document Type"::Invoice;
206
+ SalesLine. "Document No." := SalesHeader. "No.";
207
+ SalesLine. "Line No." := 10000 ; // Line number
208
+ SalesLine. Type := SalesLine. Type ::Item;
209
+ SalesLine. Insert( true) ;
210
+ end ;
211
+ end ;
212
+
121
213
var
122
214
Dialog : Codeunit "DynDialog";
123
215
Json: Codeunit "Json";
0 commit comments