TBeAccountingControlBC
TBeAccountingControlBC
Die Klasse TBeAccountingControlBC kapselt Eigenschaften und Funktionen zur Rechnungskontrolle im Einkauf.
| Eigenschaften | Beschreibung | 
|---|---|
| CbDataModule:O | Daten-Modul, für alle Funktionen und Methoden | 
| 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 | 
| 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 | 
| Funktionen und Methoden | Parameter | Beschreibung | 
|---|---|---|
| CbSuppInvoiceAuditPrepareRelease():L Erzeugung der der Daten für eine Rechnungskontrolle zu einem Lieferanten. Nachdem die Funktion aufgerufen wurden können die Daten über CbParams & CbMem100 validiert bzw. angepasst werden. | aSupplierNo:N | Lieferantennummer für den die Rechnungskontrolle/Freigabe durchgeführt werden soll | 
| aAccountingPositions:A | Positionen für die Rechnungskontrolle/Freigabe (Array mit Dab235 Ids) | |
| aUseNewVAT:L | Entspricht Schalter "Umleitung Ust. Sätze" | |
| CbSuppInvoiceAuditRelease():L Rechnungsfreigabe mit den durch CbSuppInvoiceAuditPrepareRelease() erzeugten Daten. Bei der Freigabe werden wie bei einer Freigabe and er Oberfläche die Events "Vor Abschluss Rechnungskontrolle" und "Nach Rechnungskontrolle" ausgelöst | aSupplierNo:N | Lieferantennummer für den die Rechnungskontrolle/Freigabe durchgeführt werden soll | 
| aAllowInvoiceDateOutsideFiscalYear:L | Rechnungsdatum außerhalb des Geschäftsjahres erlauben | |
| aAllowDeviationGoodsValueTargetActual:L | Abweichung zwischen SOLL und IST erlauben | |
| aAllowNegativeZero:L | negative Positionen die sind gegenseitig aufheben erlauben | |
| CbSuppInvoiceAuditPrepareUpdate():L Vorbereitung einer Rechnungskontroll-Position Anpassung. Nachdem die Funktion aufgerufen wurde steht der Dab235 Datensatz über die Eigenschaft CbMem235 zur Verfügung. | aDab235Id:N | Dab235 Id der Position die verändert werden soll | 
| CbSuppInvoiceAuditUpdate():L Rechnungskontroll-Position anpassen | aCalcPurchPrice:L | EKP neu berechnen | 
| CbSuppInvoiceAuditDelete():L Rechnungskontroll-Position löschen. Hinweis: es kann immer nur mit Zugang oder ohne Zugang gelöscht werden. Sind beide Parameter aktiv oder kein Parameter aktiv wird eine Exception ausgelöst | aDab235Id:N | Dab235 Id der Position die gelöscht werden soll | 
| aDeleteWithStoreAccount:L | Löschen mit Zugang | |
| aDeleteWithoutStoreAccount:L | Löschen ohne Zugang | |
| aRestorePurchaseDisposition:L | Bestellrückstände wiederherstellen (Achtung: nur mit aDeleteWithStoreAccount verwendbar!) | 
Beispiel
CbSuppInvoiceAuditPrepareRelease() / CbSuppInvoiceAuditRelease()
//##############################################################################
//##############################################################################
// 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, CbSuppInvoiceAuditPrepareUpdate() / CbSuppInvoiceAuditUpdate()
//##############################################################################
//##############################################################################
// 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,CbSuppInvoiceAuditDelete()
//##############################################################################
//##############################################################################
// 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,