@@ -228,7 +228,9 @@ codeunit 31002 "SalesAdvLetterManagement CZZ"
228
228
AdvanceLetterLinkCZZ. GetLetterLink( TempAdvanceLetterLinkBufferCZZ) ;
229
229
TempAdvanceLetterLinkBufferCZZ. SetFilter( Amount, ' >0' ) ;
230
230
if not TempAdvanceLetterLinkBufferCZZ. IsEmpty() then begin
231
- PostingDate := GetPostingDateUI( CustLedgerEntry. "Posting Date") ;
231
+ PostingDate := CustLedgerEntry. "Posting Date";
232
+ if not GetPostingDateUI( PostingDate) then
233
+ exit ;
232
234
if PostingDate = 0D then
233
235
Error( PostingDateEmptyErr) ;
234
236
LinkAdvancePayment( CustLedgerEntry, TempAdvanceLetterLinkBufferCZZ, PostingDate) ;
@@ -266,7 +268,9 @@ codeunit 31002 "SalesAdvLetterManagement CZZ"
266
268
var
267
269
PostingDate: Date ;
268
270
begin
269
- PostingDate := GetPostingDateUI( CustLedgerEntry. "Posting Date") ;
271
+ PostingDate := CustLedgerEntry. "Posting Date";
272
+ if not GetPostingDateUI( PostingDate) then
273
+ exit ;
270
274
if PostingDate = 0D then
271
275
Error( PostingDateEmptyErr) ;
272
276
@@ -277,7 +281,9 @@ codeunit 31002 "SalesAdvLetterManagement CZZ"
277
281
var
278
282
PostingDate: Date ;
279
283
begin
280
- PostingDate := GetPostingDateUI( CustLedgerEntry. "Posting Date") ;
284
+ PostingDate := CustLedgerEntry. "Posting Date";
285
+ if not GetPostingDateUI( PostingDate) then
286
+ exit ;
281
287
if PostingDate = 0D then
282
288
Error( PostingDateEmptyErr) ;
283
289
@@ -303,7 +309,8 @@ codeunit 31002 "SalesAdvLetterManagement CZZ"
303
309
InsertedEntryNo := SalesAdvLetterPostCZZ. PostAdvancePayment(
304
310
CustLedgerEntry, PostedGenJournalLine, GenJnlPostLine, AdvancePostingParametersCZZ) ;
305
311
end ;
306
-
312
+ #if not CLEAN25
313
+ [Obsolete( ' Replaced by GetAdvanceGLAccountNoCZZ function in GenJournalLine.' , ' 25.0' ) ]
307
314
procedure GetAdvanceGLAccount( var GenJournalLine: Record "Gen. Journal Line") : Code [20 ]
308
315
var
309
316
SalesAdvLetterHeaderCZZ: Record "Sales Adv. Letter Header CZZ";
@@ -315,6 +322,7 @@ codeunit 31002 "SalesAdvLetterManagement CZZ"
315
322
AdvanceLetterTemplateCZZ. TestField ( "Advance Letter G/L Account") ;
316
323
exit ( AdvanceLetterTemplateCZZ. "Advance Letter G/L Account") ;
317
324
end ;
325
+ #endif
318
326
319
327
procedure PostAdvancePaymentVAT( var SalesAdvLetterEntryCZZ: Record "Sales Adv. Letter Entry CZZ"; PostingDate: Date )
320
328
begin
@@ -367,11 +375,18 @@ codeunit 31002 "SalesAdvLetterManagement CZZ"
367
375
368
376
InitVATAmountLine( TempAdvancePostingBufferCZZ, SalesAdvLetterEntryCZZ. "Sales Adv. Letter No.", SalesAdvLetterEntryCZZ. Amount, SalesAdvLetterEntryCZZ. "Currency Factor") ;
369
377
378
+ TempAdvancePostingBufferCZZ. Reset() ;
379
+ TempAdvancePostingBufferCZZ. SetRange( "Auxiliary Entry", false) ;
380
+ if TempAdvancePostingBufferCZZ. IsEmpty() then
381
+ DocumentNo := SalesAdvLetterHeaderCZZ. "No.";
382
+ TempAdvancePostingBufferCZZ. Reset() ;
383
+
370
384
if Silently or not GuiAllowed then begin
371
- DocumentNo := NoSeries. GetNextNo( AdvanceLetterTemplateCZZ. "Advance Letter Invoice Nos.", PostingDate) ;
385
+ if DocumentNo = ' ' then
386
+ DocumentNo := NoSeries. GetNextNo( AdvanceLetterTemplateCZZ. "Advance Letter Invoice Nos.", PostingDate) ;
372
387
TempAdvancePostingBufferCZZ. SetFilter( Amount, ' <>0' ) ;
373
388
end else begin
374
- VATDocumentCZZ. InitSalesDocument( AdvanceLetterTemplateCZZ. "Advance Letter Invoice Nos.", ' ' ,
389
+ VATDocumentCZZ. InitSalesDocument( AdvanceLetterTemplateCZZ. "Advance Letter Invoice Nos.", DocumentNo ,
375
390
SalesAdvLetterHeaderCZZ. "Document Date", PostingDate, VATDate, 0D,
376
391
SalesAdvLetterHeaderCZZ. "Currency Code", SalesAdvLetterEntryCZZ. "Currency Factor", ' ' , TempAdvancePostingBufferCZZ) ;
377
392
if VATDocumentCZZ. RunModal() <> Action ::OK then
@@ -447,18 +462,28 @@ codeunit 31002 "SalesAdvLetterManagement CZZ"
447
462
448
463
local procedure BufferAdvanceLines( SalesAdvLetterHeaderCZZ: Record "Sales Adv. Letter Header CZZ"; var AdvancePostingBufferCZZ: Record "Advance Posting Buffer CZZ")
449
464
var
465
+ AdvanceLetterTemplateCZZ: Record "Advance Letter Template CZZ";
450
466
SalesAdvLetterLineCZZ: Record "Sales Adv. Letter Line CZZ";
451
467
TempAdvancePostingBufferCZZ: Record "Advance Posting Buffer CZZ" temporary ;
452
468
begin
453
469
AdvancePostingBufferCZZ. Reset() ;
454
470
AdvancePostingBufferCZZ. DeleteAll() ;
455
471
472
+ AdvanceLetterTemplateCZZ. Get( SalesAdvLetterHeaderCZZ. "Advance Letter Code") ;
473
+
456
474
SalesAdvLetterLineCZZ. SetRange( "Document No.", SalesAdvLetterHeaderCZZ. "No.") ;
457
475
SalesAdvLetterLineCZZ. SetFilter( Amount, ' <>0' ) ;
458
476
if SalesAdvLetterLineCZZ. FindSet() then
459
477
repeat
460
478
TempAdvancePostingBufferCZZ. PrepareForSalesAdvLetterLine( SalesAdvLetterLineCZZ) ;
461
479
AdvancePostingBufferCZZ. Update( TempAdvancePostingBufferCZZ) ;
480
+
481
+ if ( not AdvanceLetterTemplateCZZ. "Post VAT Doc. for Rev. Charge") and
482
+ ( AdvancePostingBufferCZZ. "VAT Calculation Type" = "Tax Calculation Type"::"Reverse Charge VAT")
483
+ then begin
484
+ AdvancePostingBufferCZZ. "Auxiliary Entry" := true;
485
+ AdvancePostingBufferCZZ. Modify () ;
486
+ end ;
462
487
until SalesAdvLetterLineCZZ. Next() = 0 ;
463
488
end ;
464
489
@@ -517,7 +542,9 @@ codeunit 31002 "SalesAdvLetterManagement CZZ"
517
542
begin
518
543
CustLedgerEntry. TestField ( "Advance Letter No. CZZ") ;
519
544
520
- PostingDate := GetPostingDateUI( CustLedgerEntry. "Posting Date") ;
545
+ PostingDate := CustLedgerEntry. "Posting Date";
546
+ if not GetPostingDateUI( PostingDate) then
547
+ exit ;
521
548
if PostingDate = 0D then
522
549
Error( PostingDateEmptyErr) ;
523
550
@@ -537,7 +564,9 @@ codeunit 31002 "SalesAdvLetterManagement CZZ"
537
564
PostingDate: Date ;
538
565
begin
539
566
CustLedgerEntry. Get( SalesAdvLetterEntryCZZ. "Cust. Ledger Entry No.") ;
540
- PostingDate := GetPostingDateUI( CustLedgerEntry. "Posting Date") ;
567
+ PostingDate := CustLedgerEntry. "Posting Date";
568
+ if not GetPostingDateUI( PostingDate) then
569
+ exit ;
541
570
if PostingDate = 0D then
542
571
Error( PostingDateEmptyErr) ;
543
572
UnlinkAdvancePayment( SalesAdvLetterEntryCZZ, PostingDate) ;
@@ -911,6 +940,8 @@ codeunit 31002 "SalesAdvLetterManagement CZZ"
911
940
NoSeries: Codeunit "No. Series";
912
941
GenJnlPostLine: Codeunit "Gen. Jnl.-Post Line";
913
942
AdvPaymentCloseDialog: Page "Adv. Payment Close Dialog CZZ";
943
+ DocumentNo: Code [20 ];
944
+ SourceCode: Code [10 ];
914
945
VATDate: Date ;
915
946
PostingDate: Date ;
916
947
CurrencyFactor: Decimal ;
@@ -939,15 +970,29 @@ codeunit 31002 "SalesAdvLetterManagement CZZ"
939
970
TempAdvancePostingBufferCZZ. Modify () ;
940
971
until SalesAdvLetterEntryCZZ2. Next() = 0 ;
941
972
942
- VATEntry. Get( SalesAdvLetterEntryCZZ. "VAT Entry No.") ;
943
973
SalesAdvLetterHeaderCZZ. Get( SalesAdvLetterEntryCZZ. "Sales Adv. Letter No.") ;
944
974
AdvanceLetterTemplateCZZ. Get( SalesAdvLetterHeaderCZZ. "Advance Letter Code") ;
945
975
976
+ // find VAT entry of the VAT document due to source code
977
+ SourceCode := ' ' ;
978
+ VATEntry. SetRange( "Document No.", SalesAdvLetterEntryCZZ. "Document No.") ;
979
+ VATEntry. SetRange( "Posting Date", SalesAdvLetterEntryCZZ. "Posting Date") ;
980
+ if VATEntry. FindFirst() then
981
+ SourceCode := VATEntry. "Source Code";
982
+
983
+ TempAdvancePostingBufferCZZ. Reset() ;
984
+ TempAdvancePostingBufferCZZ. SetRange( "Auxiliary Entry", false) ;
985
+ if TempAdvancePostingBufferCZZ. IsEmpty() then
986
+ DocumentNo := SalesAdvLetterHeaderCZZ. "No.";
987
+ TempAdvancePostingBufferCZZ. Reset() ;
988
+
989
+ if DocumentNo = ' ' then
990
+ DocumentNo := NoSeries. GetNextNo( AdvanceLetterTemplateCZZ. "Advance Letter Cr. Memo Nos.", WorkDate()) ;
991
+
946
992
Clear( AdvancePostingParametersCZZ) ;
947
993
AdvancePostingParametersCZZ. "Document Type" := "Gen. Journal Document Type"::"Credit Memo";
948
- AdvancePostingParametersCZZ. "Document No." :=
949
- NoSeries. GetNextNo( AdvanceLetterTemplateCZZ. "Advance Letter Cr. Memo Nos.", WorkDate()) ;
950
- AdvancePostingParametersCZZ. "Source Code" := VATEntry. "Source Code";
994
+ AdvancePostingParametersCZZ. "Document No." := DocumentNo;
995
+ AdvancePostingParametersCZZ. "Source Code" := SourceCode;
951
996
AdvancePostingParametersCZZ. "Posting Description" := SalesAdvLetterHeaderCZZ. "Posting Description";
952
997
AdvancePostingParametersCZZ. "Posting Date" := PostingDate;
953
998
AdvancePostingParametersCZZ. "Document Date" := PostingDate;
@@ -1162,8 +1207,10 @@ codeunit 31002 "SalesAdvLetterManagement CZZ"
1162
1207
if TempAdvancePostingBufferCZZ2. FindSet() then
1163
1208
repeat
1164
1209
VATPostingSetup. Get( TempAdvancePostingBufferCZZ2. "VAT Bus. Posting Group", TempAdvancePostingBufferCZZ2. "VAT Prod. Posting Group") ;
1165
- PostUnrealizedExchangeRate( SalesAdvLetterEntryCZZ, SalesAdvLetterHeaderCZZ, VATPostingSetup, TempAdvancePostingBufferCZZ2. Amount, TempAdvancePostingBufferCZZ2. "VAT Amount",
1166
- SalesAdvLetterEntryCZZ. "Entry No.", DetEntryNo, DocumentNo, ToDate, ToDate, PostDescription, GenJnlPostLine, false, false) ;
1210
+ PostUnrealizedExchangeRate( SalesAdvLetterEntryCZZ, SalesAdvLetterHeaderCZZ, VATPostingSetup,
1211
+ TempAdvancePostingBufferCZZ2. Amount, TempAdvancePostingBufferCZZ2. "VAT Amount",
1212
+ SalesAdvLetterEntryCZZ. "Entry No.", DetEntryNo, DocumentNo, ToDate, ToDate, PostDescription,
1213
+ GenJnlPostLine, false, false, TempAdvancePostingBufferCZZ2. "Auxiliary Entry") ;
1167
1214
until TempAdvancePostingBufferCZZ2. Next() = 0 ;
1168
1215
1169
1216
SalesAdvLetterPostCZZ. BufferAdvanceVATLines( SalesAdvLetterEntryCZZ, TempAdvancePostingBufferCZZ1, 0D) ;
@@ -1218,8 +1265,10 @@ codeunit 31002 "SalesAdvLetterManagement CZZ"
1218
1265
end ;
1219
1266
1220
1267
VATPostingSetup. Get( SalesAdvLetterEntryCZZ3. "VAT Bus. Posting Group", SalesAdvLetterEntryCZZ3. "VAT Prod. Posting Group") ;
1221
- PostUnrealizedExchangeRate( SalesAdvLetterEntryCZZ, SalesAdvLetterHeaderCZZ, VATPostingSetup, -AmountToPost, -VATAmountToPost,
1222
- SalesAdvLetterEntryCZZ2. "Entry No.", 0 , DocumentNo, SalesAdvLetterEntryCZZ3. "Posting Date", SalesAdvLetterEntryCZZ3. "VAT Date", PostDescription, GenJnlPostLine, false, false) ;
1268
+ PostUnrealizedExchangeRate( SalesAdvLetterEntryCZZ, SalesAdvLetterHeaderCZZ, VATPostingSetup,
1269
+ -AmountToPost, -VATAmountToPost, SalesAdvLetterEntryCZZ2. "Entry No.", 0 , DocumentNo,
1270
+ SalesAdvLetterEntryCZZ3. "Posting Date", SalesAdvLetterEntryCZZ3. "VAT Date", PostDescription,
1271
+ GenJnlPostLine, false, false, SalesAdvLetterEntryCZZ3. "Auxiliary Entry") ;
1223
1272
until SalesAdvLetterEntryCZZ3. Next() = 0 ;
1224
1273
until SalesAdvLetterEntryCZZ2. Next() = 0 ;
1225
1274
end ;
@@ -1228,7 +1277,7 @@ codeunit 31002 "SalesAdvLetterManagement CZZ"
1228
1277
1229
1278
local procedure PostUnrealizedExchangeRate( var SalesAdvLetterEntryCZZ: Record "Sales Adv. Letter Entry CZZ"; var SalesAdvLetterHeaderCZZ: Record "Sales Adv. Letter Header CZZ"; var VATPostingSetup: Record "VAT Posting Setup";
1230
1279
Amount: Decimal ; VATAmount: Decimal ; RelatedEntryNo: Integer ; RelatedDetEntryNo: Integer ; DocumentNo: Code [20 ]; PostingDate: Date ; VATDate: Date ; PostDescription: Text [100 ]; var GenJnlPostLine: Codeunit "Gen. Jnl.-Post Line";
1231
- Correction: Boolean ; Preview: Boolean )
1280
+ Correction: Boolean ; Preview: Boolean ; AuxiliaryEntry: Boolean )
1232
1281
var
1233
1282
AdvancePostingParametersCZZ: Record "Advance Posting Parameters CZZ";
1234
1283
begin
@@ -1240,21 +1289,23 @@ codeunit 31002 "SalesAdvLetterManagement CZZ"
1240
1289
AdvancePostingParametersCZZ. "Temporary Entries Only" := Preview;
1241
1290
1242
1291
SalesAdvLetterPostCZZ. PostUnrealizedExchangeRate(
1243
- SalesAdvLetterHeaderCZZ, SalesAdvLetterEntryCZZ, VATPostingSetup, Amount, VATAmount, RelatedEntryNo, RelatedDetEntryNo, Correction, GenJnlPostLine, AdvancePostingParametersCZZ) ;
1292
+ SalesAdvLetterHeaderCZZ, SalesAdvLetterEntryCZZ, VATPostingSetup, Amount, VATAmount,
1293
+ RelatedEntryNo, RelatedDetEntryNo, Correction, AuxiliaryEntry, GenJnlPostLine, AdvancePostingParametersCZZ) ;
1244
1294
end ;
1245
1295
1246
- local procedure GetPostingDateUI( DefaultPostingDate : Date ) : Date
1296
+ local procedure GetPostingDateUI( var PostingDate : Date ) : Boolean
1247
1297
var
1248
1298
GetPostingDateCZZ: Page "Get Posting Date CZZ";
1249
- PostingDate: Date ;
1250
1299
begin
1251
1300
if not GuiAllowed() then
1252
- exit ( DefaultPostingDate) ;
1301
+ exit ( true) ;
1302
+
1303
+ GetPostingDateCZZ. SetValues( PostingDate) ;
1304
+ if GetPostingDateCZZ. RunModal() <> Action ::OK then
1305
+ exit ( false) ;
1253
1306
1254
- GetPostingDateCZZ. SetValues( DefaultPostingDate) ;
1255
- if GetPostingDateCZZ. RunModal() = Action ::OK then
1256
- GetPostingDateCZZ. GetValues( PostingDate) ;
1257
- exit ( PostingDate) ;
1307
+ GetPostingDateCZZ. GetValues( PostingDate) ;
1308
+ exit ( true) ;
1258
1309
end ;
1259
1310
#if not CLEAN24
1260
1311
#pragma warning disable AL0432
0 commit comments