Codeblock Onlinehilfe

TBeAccountingControlBC

TBeAccountingControlBC

Die Klasse TBeAccountingControlBC kapselt Eigenschaften und Funktionen zur Rechnungskontrolle im Einkauf.

Eigenschaften

Eigenschaft

Beschreibung

CbDataModule:O

Daten-Modul, für alle Funktionen und Methoden

CbMem100:O

Lieferanten Datensatz der Dab100 als Memtable, zur Bearbeitung der Lieferbedingungen Hinweis: Die Eigenschaft ist erst nach dem Aufruf von CbSuppInvoiceAuditPrepareRelease() verfügbar/gefüllt

CbMem235:O


CbParams:O

Zugriff auf die Freigabe Parameter (z.B. Rechnungsnummer, Porto/Verpackung) Hinweis: Die Eigenschaft ist erst nach dem Aufruf von CbSuppInvoiceAuditPrepareRelease() verfügbar/gefüllt Beschreibung/Eigenschaften siehe [TBeCbSuppInvoiceAuditReleaseParam]

Name:C


Tag:N


Methoden

Methode

Beschreibung

CbSuppInvoiceAuditPrepareUpdate(aDab235Id:N):L


CbSuppInvoiceAuditUpdate(aCalcPurchPrice:L):L


CbSuppInvoiceAuditDelete(aDab235Id:N, aDeleteWithStoreAccount:L, aRestorePurchaseDisposition:L):L


CbSuppInvoiceAuditPrepareRelease(aSupplierNo:N, aAccountingPositions:U, aUseNewVAT:L):L


CbSuppInvoiceAuditRelease(aSupplierNo:N, aAllowInvoiceDateOutsideFiscalYear:L, aAllowDeviationGoodsValueTargetActual:L, aAllowNegativeZero:L):L


Beispiel

//##############################################################################
//##############################################################################
// Beschreibung: TBeAccountingControlBC 
//                - CbSuppInvoiceAuditPrepareRelease()
//                - CbSuppInvoiceAuditRelease()
//##############################################################################
//##############################################################################

| oBC,  oParam, oDM, aPos, nSupplier, i, oMem100,
  lAllowInvoiceDateOutsideFiscalYear:L, lAllowDeviationGoodsValueTargetActual:L,
  lAllowNegativeZero:L, lUseNewVAT:L |

startseq
   startseq
      oDM := DBGetDataModuleFromPool(),
      oBC := CreateObject('TBeAccountingControlBC', 'BC'),
      oBC.CbDataModule := oDM,

      lUseNewVAT := true,        // Nur möglich wenn USt.-Umstellung in den Festwerten konfiguriert
      nSupplier  := 90111,        // Lieferant Nr.
      aPos       := {7355, 7184}, // Dab235 Ids

      // Vorbereitung der Rechnungskontrolle (Vorberechnung, Validierung)
      if oBC.CbSuppInvoiceAuditPrepareRelease(nSupplier, aPos, lUseNewVAT) then
         lAllowInvoiceDateOutsideFiscalYear    := true,  // Rechnungsdatum außerhalb Geschäftsjahr erlauben
         lAllowDeviationGoodsValueTargetActual := false, // Abweichenden Warenwert Soll/Ist erlauben
         lAllowNegativeZero                    := false, // Rechnungsfreigabe für Positionen mit negativen und positiven Mengen mit Gesamt-Wert 0 erlauben

         oParam  := oBC.CbParams, // TBeCbSuppInvoiceAuditReleaseParam
         oMem100 := oBC.CbMem100, // Dab100 Datensatz zur Bearbeitung der Zahlungsbedingungen

         // Verfügbare Steuersätze
         writeln('------ Verfügbare Steuersätze ------'),
         for i := 1 to MBEMAXVATID do
           writeln(i,                                                // Steuersatz Nr.
                   PadL(oParam.CbGetVatRateDescription(i), 15, ' '), // Bezeichnung
                   PadL(oParam.CbGetVatRate(i), 4) + '%',            // Steuersatz
                   PadL(oParam.CbGetNewVATIdx(i), 2)                 // Steuersatz Umleitung auf Steuersatz Nr.
                  ),
         next,
         writeln(''),

         oParam.CbAccNo         := 'RE1234', // Rechnungsnummer
         oParam.CbAccDate       := today(),  // Rechnungsdatum
         oParam.CbFibuAcc       := true,     // FiBu Buchung? Nur aktiv wenn DABPAR:EK_RE_KONT = F
         oParam.CbIntDocNo      := 'INT134', // Interne Belegnummer
         oParam.CbPostage       := 10,       // Porto/Fracht
         oParam.CbPostage_VATID := 8,        // Porto/Fracht VAT ID

         // Nur für FiBu Buchungen
         if oParam.CbFibuAcc then
           oParam.CbPackage         := 10,   // Verpackung
           oParam.CbPackage_VATID   := 8,    // Verpackung VAT ID
           oParam.CbInsurance       := 10,   // Versicherung
           oParam.CbInsurance_VATID := 8,    // Versicherung VAT ID
           oParam.CbExtra           := 10,   // Sonstige Kosten
           oParam.CbExtra_VATID     := 8,    // Sonstige Kosten VAT ID

           // oParam.CbAccText         := '',  // Buchungstext
           writeln('Buchungstext', oParam.CbAccText), // Buchungstext

           // Zahlungsbedingungen
           writeln(''),
           writeln('Fälligkeit an festem Tag', oMem100:ZA_FIXDAT),
           writeln('Skonto-Tage', oMem100:SKONTOTAGE),
           writeln('Skonto-%', oMem100:SKONTOPROZ),
           writeln('Skonto-Tage (2. %-Satz)', oMem100:SKONTOTAG2),
           writeln('Skonto-%    (2. %-Satz)', oMem100:SKONTOPRO2),
           writeln('Netto-Tage', oMem100:NETTOTAGE),
           writeln('Netto-Fällig im Folgemonat', oMem100:NETTO_FM),
           writeln('Skonto im Folgemonat', oMem100:SKONTO_FM),
           writeln('Zahlungs-Bedingungen Klartext', Alltrim(oMem100:ZAHLBED)),
           writeln(''),
         endif,

         //oParam.CbSetNetto(8, 15.0), // Warenwert für Steuersatz setzten

         // Warenwert + Steuerwert + Wert Fremdwährung
         for i := 1 to MBEMAXVATID do
           writeln(i,                                    // Steuersatz Nr.
                   PadL(oParam.CbGetNetto(i), 10),       // Warenwert
                   PadL(oParam.CbGetVAT(i), 10),         // Steuerwert
                   PadL(oParam.CbGetVATForeign(i), 10)   // Steuerwert Fremdwährung
                  ),
         next,
         writeln(''),

         writeln('Lieferant = Ausländer', oMem100:MWSTKZ),     

         if oParam.CbFibuAcc then
            writeln('Waren Wert SOLL', oParam.CbDebitValue), // ReadOnly - Waren Wert SOLL
         endif,
         writeln('Abweichung Warenwert SOLL/IST', oParam.CbVarianceFor), // ReadOnly - Abweichung Warenwert SOLL/IST
         writeln('Rechnungssumme', oParam.CbTotal),                      // ReadOnly - Rechnungssumme

         // Rechnungskontroll Freigabe durchführen
         if not oBC.CbSuppInvoiceAuditRelease(nSupplier, lAllowInvoiceDateOutsideFiscalYear, lAllowDeviationGoodsValueTargetActual, lAllowNegativeZero) then
           writeln('Fehler bei der Rechnungskontroll Freigabe'),
         endif,
      endif,
   onerror
      writeln(GetErrorText(), GetErrorObj()),
   stopseq,
always
   DBReturnDataModuleToPool(oDM),
   DestroyObject(oBC),
stopseq,
//##############################################################################
//##############################################################################
// Beschreibung: TBeAccountingControlBC 
//                - CbSuppInvoiceAuditPrepareUpdate()
//                - CbSuppInvoiceAuditUpdate()
//##############################################################################
//############################################################################## 

| oBC, oDM, aPos, oMem235, lCalcPurchPrice:L |

startseq
   startseq
      oDM := DBGetDataModuleFromPool(),
      oBC := CreateObject('TBeAccountingControlBC', 'BC'),
      oBC.CbDataModule := oDM,

      aPos := 7355, // Dab235 Id
      // Vorbereitung der Rechnungskontrolle (Vorberechnung, Validierung)
      if oBC.CbSuppInvoiceAuditPrepareUpdate(aPos) then

         oMem235 := oBC.CbMem235, // nach dem PrepareUpdate() ist der Dab235 Datensatz über CbMem235 verfügbar
         // writeln(oMem235.RecAsArray),

         lCalcPurchPrice := false, // EKP Neuberechnung
         if not oBC.CbSuppInvoiceAuditUpdate(lCalcPurchPrice) then
           writeln('Fehler bei der Rechnungskontrolle Update'),
         endif,
      endif,
   onerror
      writeln(GetErrorText(), GetErrorObj()),
   stopseq,
always
   DBReturnDataModuleToPool(oDM),
   DestroyObject(oBC),
stopseq,
//##############################################################################
//##############################################################################
// Beschreibung: TBeAccountingControlBC 
//                - CbSuppInvoiceAuditDelete()
//##############################################################################
//############################################################################## 

| oBC, oDM, aPos, lDeleteWithStoreAccount:L, lRestorePurchaseDisposition:L |

startseq
   startseq
      oDM := DBGetDataModuleFromPool(),
      oBC := CreateObject('TBeAccountingControlBC', 'BC'),
      oBC.CbDataModule := oDM,

      lDeleteWithStoreAccount     := false, // Löschen mit oder ohne Zugang
      lRestorePurchaseDisposition := false, // Bestellrückstände wiederherstellen (nur mit lDeleteWithStoreAccount = True)

      aPos := 7355, // Dab235 Id
      // Rechnungskontrolle Position löschen
      if not oBC.CbSuppInvoiceAuditDelete(aPos, lDeleteWithStoreAccount, lRestorePurchaseDisposition) then
        writeln('Fehler bei der Rechnungskontrolle Delete'),
      endif,
   onerror
      writeln(GetErrorText(), GetErrorObj()),
   stopseq,
always
   DBReturnDataModuleToPool(oDM),
   DestroyObject(oBC),
stopseq,

Weitere Verknüpfungen