9. August 2010 16:57
GenJnlTemplate.GET(buchblatt."Journal Template Name");
GenJnlBatch.GET(buchblatt."Journal Template Name",buchblatt."Journal Batch Name");
IF GenJnlBatch."No. Series" <> '' THEN BEGIN
CLEAR(NoSeriesMgt);
buchblatt."Document No." := NoSeriesMgt.TryGetNextNo(GenJnlBatch."No. Series",buchblatt."Posting Date");
END;
Ich würde zum Füllen eines Buchblattes versuchen, die Eingabe per Hand im Code zu simulieren. Also die Funktion SetupNewLine aufrufen statt sie teilweise zu kopieren (dafür ist sie da), und dann die nötigen Felder in der Reihenfolge der Eingabe validieren. So hat das auch immer funktioniert.
GenJnlLine.SetUpNewLine(GenJnlLine."Document No.");
9. August 2010 17:53
GenJnlLine.SetUpNewLine(LastGenJnlLine,Balance,BottomLine)
GenJnlLine.SetUpNewLine(GenJnlLine."Document No.");
Report OnPreDataItem
ZeilenNr:=10000;
CASE ImportType OF
ImportType::SachSaldo : BEGIN
IMPSachSaldo.SETFILTER("Amount Type", '%1',1);
TemplateName:='Allgemein';
BatchName:='Imp SALDO';
END;
ImportType::Bewegung : BEGIN
IMPSachSaldo.SETFILTER("Amount Type",'>=%1',2);
TemplateName:='Allgemein';
BatchName:='Imp BEW';
IF FilterPostingDate = 0D THEN
ERROR(Text0002);
SETRANGE("Posting Date",FilterPostingDate);
END;
END;
IMPSachkonto.FINDFIRST;
JournalBatch.SETRANGE("Journal Template Name",TemplateName);
JournalBatch.SETRANGE(Name,BatchName);
IF NOT JournalBatch.FINDFIRST THEN
BEGIN
JournalBatch."Journal Template Name":=TemplateName;
JournalBatch.Name:=BatchName;
JournalBatch."Acc. Rule Dim. Value Code":='HGB';
JournalBatch.INSERT(TRUE);
END;
GenJournalLine.SETRANGE("Journal Template Name",TemplateName);
GenJournalLine.SETRANGE("Journal Batch Name",BatchName);
IF GenJournalLine.FINDFIRST THEN
ERROR(Text0001, BatchName);
Report OnAfterGetRecord
CASE "Amount Type" OF
1 : IF IMPSachSaldo.Amount = 0 THEN CurrReport.SKIP;
2 : IF IMPSachSaldo."Debit Amount" = 0 THEN CurrReport.SKIP;
3 : IF IMPSachSaldo."Credit Amount" = 0 THEN CurrReport.SKIP;
END;
GenJournalLine.VALIDATE("Journal Template Name",TemplateName);
GenJournalLine.VALIDATE("Journal Batch Name",BatchName);
GenJournalLine."Line No.":=ZeilenNr;
ZeilenNr+=10000;
GenJournalLine.VALIDATE("Account Type",GenJournalLine."Account Type"::"G/L Account");
IF (IMPSachkonto.GET(IMPSachSaldo.AccountNo)) AND (NoMapping<>0) THEN
BEGIN
IMPSachkonto.TESTFIELD(IMPSachkonto.GLAccountNo);
GLAccount.GET(IMPSachkonto.GLAccountNo);
IF GLAccount."Direct Posting" = FALSE THEN
BEGIN
GLAccount."Direct Posting":=TRUE;
GLAccount.MODIFY;
END;
GenJournalLine.VALIDATE("Account No.",IMPSachkonto.GLAccountNo);
END ELSE
BEGIN
GLAccount.GET(IMPSachSaldo.AccountNo);
IF GLAccount."Direct Posting" = FALSE THEN
BEGIN
GLAccount."Direct Posting":=TRUE;
GLAccount.MODIFY;
END;
GenJournalLine.VALIDATE("Account No.",IMPSachSaldo.AccountNo);
END;
GenJournalLine.VALIDATE("Posting Date",PostingDate);
GenJournalLine.VALIDATE("Document Date", TODAY);
GenJournalLine.VALIDATE("Document No.",IMPSachSaldo.DocumentNo);
GenJournalLine.Description:=IMPSachSaldo."Posting Description";
GenJournalLine.VALIDATE("Gen. Posting Type",GenJournalLine."Gen. Posting Type"::" ");
GenJournalLine.VALIDATE("Gen. Bus. Posting Group",'');
GenJournalLine.VALIDATE("Gen. Prod. Posting Group",'');
GenJournalLine.VALIDATE("VAT Bus. Posting Group",'');
GenJournalLine.VALIDATE("VAT Prod. Posting Group",'');
CASE "Amount Type" OF
1 : BEGIN
GenJournalLine.VALIDATE(Amount,IMPSachSaldo.Amount);
END;
2 : BEGIN
GenJournalLine.VALIDATE("Debit Amount",IMPSachSaldo."Debit Amount");
GenJournalLine.VALIDATE("Bal. Account Type",GenJournalLine."Bal. Account Type"::"G/L Account");
GenJournalLine.VALIDATE("Bal. Account No.",BalAccountNo);
END;
3 : BEGIN
GenJournalLine.VALIDATE("Credit Amount", IMPSachSaldo."Credit Amount");
GenJournalLine.VALIDATE("Bal. Account Type",GenJournalLine."Bal. Account Type"::"G/L Account");
GenJournalLine.VALIDATE("Bal. Account No.",BalAccountNo);
END;
END;
GenJournalLine.INSERT(TRUE);
10. August 2010 09:35
IF import.FIND('-') THEN BEGIN
REPEAT
GenJnlLine.INIT;
GenJnlLine."Journal Template Name":='ALLGEMEIN';
GenJnlLine."Journal Batch Name":='STANDARD';
GenJnlLine."Line No.":=import.Kesy;
GenJnlLine.Amount:=import.Betrag;
GenJnlLine."Bal. Account No.":=import.Gegenkonto;
GenJnlLine."External Document No.":=import."Beleg-Nr";
GenJnlLine."Posting Date":= import.Buchungsdatum;
GenJnlLine."Due Date":=import.Fälligkeitsdatum;
GenJnlLine."Document Date":=import.Buchungsdatum;
GenJnlLine."Account Type":=GenJnlLine."Account Type"::Customer;
GenJnlLine."Account No.":=import."Konto-Nr";
IF customer.GET(GenJnlLine."Account No.") THEN
GenJnlLine.Description:= customer.Name
ELSE GenJnlLine.Description:='Kontonummer nicht vorhanden';
GenJnlLine."Shortcut Dimension 1 Code":=import."Kostenstellen-Nr";
GenJnlLine."Shortcut Dimension 2 Code":=import."Kostenträger-Nr";
GenJnlLine."VAT Registration No.":=import."USt-IDNr";
//GenJnlLine.SetUpNewLine(GenJnlLine."Document No.");
GenJnlLine.INSERT;
UNTIL import.NEXT=0;
END;
10. August 2010 10:35
10. August 2010 12:13
Ich würde einen FiBu Buchblatt Vorlage anlegen und dort eine Nummernserie definieren.
Diese Buchblattvorlage rufst Du dann ab und lässt dir auf eine Hilfvariable eine neue Nummer aus der Nummernserie zuteilen.
NoSeriesLine.SETFILTER("Series Code",'Test');
variabel:=NoSeriesLine."Last No. Used";
GenJnlLine."Document No.:= variabel + 1;
10. August 2010 13:10
"Gen. Journal Batch".setrange("Journal Template Name",'ALLGEMEIN');
"Gen. Journal Batch".setrange(Name,'IMPORT');
If "Gen. Journal Batch".FINDFIRST then
begin
TmpDocNo:= NoSeriesMgmt.GetNextNo("Gen. Journal Batch"."No. Series",TODAY,TRUE);
end;
Report - OnPreDataItem
"Gen. Journal Batch".setrange("Journal Template Name",'ALLGEMEIN');
"Gen. Journal Batch".setrange(Name,'IMPORT');
If not "Gen. Journal Batch".FINDFIRST then
error('Keinen FiBu Buchblatt definiert');
Report - OnAfterGetRecord
GenJnlLine."Document No.":= NoSeriesMgmt.GetNextNo("Gen. Journal Batch"."No. Series",TODAY,TRUE);
10. August 2010 13:27