diff --git a/www/lib/class.erpapi.php b/www/lib/class.erpapi.php index 32b2a4bb..7fd43400 100644 --- a/www/lib/class.erpapi.php +++ b/www/lib/class.erpapi.php @@ -36096,6 +36096,18 @@ function Firmendaten($field,$projekt="") } } + /* + * Recalculate payment status and skonto + * using module rechnung + */ + public function rechnung_zahlstatus_berechnen() { + $rechnung = $this->app->loadModule('rechnung', false); + if($rechnung !== null && method_exists($rechnung, 'rechnung_zahlstatus_berechnen')) { + return $rechnung->rechnung_zahlstatus_berechnen(); + } + } + + public function ANABREGSNeuberechnen($id,$art,$force=false) { if($id <= 0 || empty($art)) diff --git a/www/pages/content/mahnwesen_list.tpl b/www/pages/content/mahnwesen_list.tpl new file mode 100644 index 00000000..c3e87d82 --- /dev/null +++ b/www/pages/content/mahnwesen_list.tpl @@ -0,0 +1,56 @@ +
' AS `open`, CONCAT('') AS `auswahl`";
+
+ $menu = "| " . " |
' AS `open`, CONCAT('') AS `auswahl`";
+ $result = $this->app->DB->SelectArr("SELECT SQL_CALC_FOUND_ROWS m.id, $dropnbox, m.name, m.rest, m.test, m.id FROM mahnwesen m"." WHERE id=$id");
+
+ foreach ($result[0] as $key => $value) {
+ $this->app->Tpl->Set(strtoupper($key), $value);
+ }
+
+ /*
+ * Add displayed items later
+ *
+
+ $this->app->Tpl->Add('KURZUEBERSCHRIFT2', $email);
+ $this->app->Tpl->Add('EMAIL', $email);
+ $this->app->Tpl->Add('ANGEZEIGTERNAME', $angezeigtername);
+ */
+
+// $this->SetInput($input);
+ $this->app->Tpl->Parse('PAGE', "mahnwesen_edit.tpl");
+ }
+
+ /**
+ * Get all paramters from html form and save into $input
+ */
+ public function GetInput(): array {
+ $input = array();
+ //$input['EMAIL'] = $this->app->Secure->GetPOST('email');
+
+ $input['name'] = $this->app->Secure->GetPOST('name');
+ $input['rest'] = $this->app->Secure->GetPOST('rest');
+ $input['test'] = $this->app->Secure->GetPOST('test');
+
+
+ return $input;
+ }
+
+ /*
+ * Set all fields in the page corresponding to $input
+ */
+ function SetInput($input) {
+ // $this->app->Tpl->Set('EMAIL', $input['email']);
+
+ $this->app->Tpl->Set('NAME', $input['name']);
+ $this->app->Tpl->Set('REST', $input['rest']);
+ $this->app->Tpl->Set('TEST', $input['test']);
+
+ }
+
+}
diff --git a/www/pages/rechnung.php b/www/pages/rechnung.php
index fad4b4de..9f8415cc 100644
--- a/www/pages/rechnung.php
+++ b/www/pages/rechnung.php
@@ -1816,7 +1816,7 @@ class Rechnung extends GenRechnung
if($bezahlt_am=='--')$bezahlt_am='0000-00-00';
$alte_mahnstufe = $this->app->DB->Select("SELECT mahnwesen FROM rechnung WHERE id='$id' LIMIT 1");
- if($alte_mahnstufe!=$mahnwesen) $versendet=0; else $versendet=1;
+ if($alte_mahnstufe!=$mahnwesen) $versendet=0;
/* if($mahnwesenfestsetzen=='1')
{*/
@@ -2239,68 +2239,7 @@ class Rechnung extends GenRechnung
} // ende ausfuehren
if($this->app->Secure->GetPOST('zahlungsstatus_berechnen') && $this->app->erp->RechteVorhanden('rechnung', 'edit')) {
-
- // START RECALCULATE
- $this->app->erp->fibu_rebuild_tables();
- $offene_rechnungen = $this->app->DB->SelectArr(" SELECT
- id,
- soll,
- waehrung,
- datum,
- zahlungszieltage,
- DATE_ADD(datum, INTERVAL zahlungszieltage DAY) as zieldatum,
- CURRENT_DATE > DATE_ADD(datum, INTERVAL zahlungszieltage DAY) as faellig,
- zahlungszielskonto,
- TRUNCATE(soll*(1-(zahlungszielskonto/100)),2) as skontosoll,
- zahlungszieltageskonto,
- DATE_ADD(datum, INTERVAL zahlungszieltageskonto DAY) as zieldatumskonto
- FROM
- rechnung
- WHERE
- belegnr <> ''
- ");
-
- foreach ($offene_rechnungen as $offene_rechnung) {
- $saldo = $this->app->erp->GetSaldoDokument($offene_rechnung['id'],'rechnung');
- if (!empty($saldo)) {
- if ($saldo['waehrung'] == $offene_rechnung['waehrung']) {
- $offene_rechnung['ist'] = $offene_rechnung['soll']+$saldo['betrag'];
- // Check for skonto
- $skontorelevante_zahlungen = $this->app->erp->GetSaldoDokument($offene_rechnung['id'],'rechnung','zubuchung',$offene_rechnung['zieldatumskonto'])['betrag'];
- $zielkonforme_zahlungen = $this->app->erp->GetSaldoDokument($offene_rechnung['id'],'rechnung','zubuchung',$offene_rechnung['zieldatum'])['betrag'];
- // Check overall value
- if ($saldo['betrag'] == 0) {
- // ok -> will be marked as paid
- } else if ($skontorelevante_zahlungen >= $offene_rechnung['skontosoll']) {
- // Skonto ok -> book difference
- $sachkonto = $this->app->erp->Firmendaten('rechnung_skonto_kontorahmen');
- if (!empty($sachkonto)) {
- $this->app->erp->fibu_buchungen_buchen('rechnung',$offene_rechnung['id'],'kontorahmen',$sachkonto,-$saldo['betrag'],$offene_rechnung['waehrung'],'CURRENT_DATE','');
- $offene_rechnung['ist'] = $offene_rechnung['soll'];
- } else {
- }
- } else if ($offene_rechnung['faellig']) {
- // Overdue
- } else {
- // Not due
- }
- // Update rechnung
- $sql = "UPDATE
- rechnung
- SET
- ist = ".$saldo['betrag']."+soll,
- zahlungsstatus = IF(".$saldo['betrag']." = 0,'bezahlt','offen')
- WHERE id=".$offene_rechnung['id'];
- $this->app->DB->Update($sql);
- }
- }
- else {
- $this->app->DB->Update("UPDATE rechnung SET ist = null WHERE id=".$offene_rechnung['id']);
- }
- }
- $this->app->erp->fibu_rebuild_tables();
- // END RECALCULATE
-
+ $this->rechnung_zahlstatus_berechnen();
}
$this->app->Tpl->Set('UEBERSCHRIFT','Rechnungen');
@@ -2801,5 +2740,71 @@ class Rechnung extends GenRechnung
}
}
+ /*
+ * Recalculate the payments status with skonto
+ */
+
+ function rechnung_zahlstatus_berechnen() {
+ // START RECALCULATE
+ $this->app->erp->fibu_rebuild_tables();
+ $offene_rechnungen = $this->app->DB->SelectArr(" SELECT
+ id,
+ soll,
+ waehrung,
+ datum,
+ zahlungszieltage,
+ DATE_ADD(datum, INTERVAL zahlungszieltage DAY) as zieldatum,
+ CURRENT_DATE > DATE_ADD(datum, INTERVAL zahlungszieltage DAY) as faellig,
+ zahlungszielskonto,
+ TRUNCATE(soll*(1-(zahlungszielskonto/100)),2) as skontosoll,
+ zahlungszieltageskonto,
+ DATE_ADD(datum, INTERVAL zahlungszieltageskonto DAY) as zieldatumskonto
+ FROM
+ rechnung
+ WHERE
+ belegnr <> ''
+ ");
+
+ foreach ($offene_rechnungen as $offene_rechnung) {
+ $saldo = $this->app->erp->GetSaldoDokument($offene_rechnung['id'],'rechnung');
+ if (!empty($saldo)) {
+ if ($saldo['waehrung'] == $offene_rechnung['waehrung']) {
+ $offene_rechnung['ist'] = $offene_rechnung['soll']+$saldo['betrag'];
+ // Check for skonto
+ $skontorelevante_zahlungen = $this->app->erp->GetSaldoDokument($offene_rechnung['id'],'rechnung','zubuchung',$offene_rechnung['zieldatumskonto'])['betrag'];
+ $zielkonforme_zahlungen = $this->app->erp->GetSaldoDokument($offene_rechnung['id'],'rechnung','zubuchung',$offene_rechnung['zieldatum'])['betrag'];
+ // Check overall value
+ if ($saldo['betrag'] == 0) {
+ // ok -> will be marked as paid
+ } else if ($skontorelevante_zahlungen >= $offene_rechnung['skontosoll']) {
+ // Skonto ok -> book difference
+ $sachkonto = $this->app->erp->Firmendaten('rechnung_skonto_kontorahmen');
+ if (!empty($sachkonto)) {
+ $this->app->erp->fibu_buchungen_buchen('rechnung',$offene_rechnung['id'],'kontorahmen',$sachkonto,-$saldo['betrag'],$offene_rechnung['waehrung'],'CURRENT_DATE','');
+ $offene_rechnung['ist'] = $offene_rechnung['soll'];
+ } else {
+ }
+ } else if ($offene_rechnung['faellig']) {
+ // Overdue
+ } else {
+ // Not due
+ }
+ // Update rechnung
+ $sql = "UPDATE
+ rechnung
+ SET
+ ist = ".$saldo['betrag']."+soll,
+ zahlungsstatus = IF(".$saldo['betrag']." = 0,'bezahlt','offen')
+ WHERE id=".$offene_rechnung['id'];
+ $this->app->DB->Update($sql);
+ }
+ }
+ else {
+ $this->app->DB->Update("UPDATE rechnung SET ist = null WHERE id=".$offene_rechnung['id']);
+ }
+ }
+ $this->app->erp->fibu_rebuild_tables();
+ // END RECALCULATE
+ }
}