mirror of
https://github.com/OpenXE-org/OpenXE.git
synced 2025-03-05 22:49:48 +01:00
fibu_buchhaltung belege zuordnen multi option
This commit is contained in:
parent
667b70eaf5
commit
69172672b2
@ -35973,7 +35973,7 @@ function Firmendaten($field,$projekt="")
|
|||||||
* Auftrag: gesamtsumme, rechnung: soll, gutschrift: soll verbindlichkeit: betrag
|
* Auftrag: gesamtsumme, rechnung: soll, gutschrift: soll verbindlichkeit: betrag
|
||||||
* returns array(array(betrag, waehrung)) one line per waehrung
|
* returns array(array(betrag, waehrung)) one line per waehrung
|
||||||
*/
|
*/
|
||||||
public function GetSaldenDokument($id, $type, string $cascadelevel = '') : array {
|
public function GetSaldenDokument(int $id, string $type, string $cascadelevel = '') : array {
|
||||||
|
|
||||||
if ($cascadelevel != '') {
|
if ($cascadelevel != '') {
|
||||||
$documents = $this->GetZahlungenAssociatedDocuments($id, $type, $cascadelevel);
|
$documents = $this->GetZahlungenAssociatedDocuments($id, $type, $cascadelevel);
|
||||||
@ -36014,9 +36014,9 @@ function Firmendaten($field,$projekt="")
|
|||||||
/*
|
/*
|
||||||
* Calculate the payment amount of a document
|
* Calculate the payment amount of a document
|
||||||
* Auftrag: gesamtsumme, rechnung: soll, gutschrift: soll verbindlichkeit: betrag
|
* Auftrag: gesamtsumme, rechnung: soll, gutschrift: soll verbindlichkeit: betrag
|
||||||
* returns array(array(betrag, waehrung)) or empty array
|
* returns array(betrag, waehrung) or empty array if multiple
|
||||||
*/
|
*/
|
||||||
public function GetSaldoDokument($id, $type) : array {
|
public function GetSaldoDokument(int $id, string $type) : array {
|
||||||
|
|
||||||
$sql = "
|
$sql = "
|
||||||
SELECT
|
SELECT
|
||||||
|
@ -40,7 +40,16 @@
|
|||||||
<table>
|
<table>
|
||||||
<legend>Stapelverarbeitung</legend>
|
<legend>Stapelverarbeitung</legend>
|
||||||
<tr>
|
<tr>
|
||||||
<td><input type="checkbox" value="1" id="autoalle" /> alle markieren </td>
|
<td><input type="checkbox" value="1" id="autoalle" /> alle markieren
|
||||||
|
<select form="buchungenform" id="sel_aktion" name="sel_aktion">
|
||||||
|
<option value="">{|bitte wählen|} ...</option>
|
||||||
|
<option value="vorschlag">{|auf Vorschläge buchen|}</option>
|
||||||
|
<option value="sachkonto">{|auf Sachkonto buchen|}</option>
|
||||||
|
<option value="vorschlag_diff_sachkonto">{|auf Vorschläge buchen, Differenz auf Sachkonto|}</option>
|
||||||
|
</select>
|
||||||
|
<input type="text" form="buchungenform" id="sachkonto" name="sachkonto" value="">
|
||||||
|
<button name="submit" form="buchungenform" value="BUCHEN" class="ui-button-icon">{|BUCHEN|}</button>
|
||||||
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<form action="" method="post">
|
<form action="" method="post">
|
||||||
@ -50,17 +59,7 @@
|
|||||||
</button>
|
</button>
|
||||||
</td>
|
</td>
|
||||||
</form>
|
</form>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
|
||||||
<td>
|
|
||||||
<input type="text" form="buchungenform" id="sachkonto" name="sachkonto" value="">
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>
|
|
||||||
<button name="submit" form="buchungenform" value="BUCHEN" class="ui-button-icon" style="width:100%;">{|Markierte BUCHEN|}</button>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
</table>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
</div>
|
</div>
|
||||||
|
@ -766,7 +766,7 @@ class Fibu_buchungen {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($submit == 'BUCHEN') {
|
if ($submit == 'BUCHEN') {
|
||||||
|
|
||||||
// Process multi action
|
// Process multi action
|
||||||
$ids = $this->app->Secure->GetPOST('ids');
|
$ids = $this->app->Secure->GetPOST('ids');
|
||||||
$werte = $this->app->Secure->GetPOST('werte');
|
$werte = $this->app->Secure->GetPOST('werte');
|
||||||
@ -774,11 +774,12 @@ class Fibu_buchungen {
|
|||||||
$auswahl = $this->app->Secure->GetPOST('auswahl');
|
$auswahl = $this->app->Secure->GetPOST('auswahl');
|
||||||
$vorschlaege = $this->app->Secure->GetPOST('vorschlaege');
|
$vorschlaege = $this->app->Secure->GetPOST('vorschlaege');
|
||||||
$sachkonto = $this->app->Secure->GetPOST('sachkonto');
|
$sachkonto = $this->app->Secure->GetPOST('sachkonto');
|
||||||
|
$aktion = $this->app->Secure->GetPOST('sel_aktion');
|
||||||
|
|
||||||
$sachkontoid = null;
|
$account_id = null;
|
||||||
if (!empty($sachkonto)) {
|
if (!empty($sachkonto)) {
|
||||||
$sachkonto_kennung = explode(' ',$sachkonto)[0];
|
$sachkonto_kennung = explode(' ',$sachkonto)[0];
|
||||||
$sachkontoid = $this->app->DB->SelectArr("SELECT id from kontorahmen WHERE sachkonto = '".$sachkonto_kennung."'")[0]['id'];
|
$account_id = $this->app->DB->SelectArr("SELECT id from kontorahmen WHERE sachkonto = '".$sachkonto_kennung."'")[0]['id'];
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!empty($auswahl)) {
|
if (!empty($auswahl)) {
|
||||||
@ -794,28 +795,51 @@ class Fibu_buchungen {
|
|||||||
$von_id = (int) $von[1];
|
$von_id = (int) $von[1];
|
||||||
|
|
||||||
$betrag = $werte[$key_ids];
|
$betrag = $werte[$key_ids];
|
||||||
|
|
||||||
$waehrung = $waehrungen[$key_ids];
|
$waehrung = $waehrungen[$key_ids];
|
||||||
|
|
||||||
$doc_id = null;
|
$datum = $this->app->DB->SelectArr("SELECT datum FROM fibu_buchungen_alle WHERE typ='".$von_typ."' AND id = '".$von_id."'")[0]['datum']; // Get relevant date of source doc
|
||||||
|
|
||||||
if ($sachkontoid) {
|
$doc_id = null;
|
||||||
$doc_typ = 'kontorahmen';
|
if ($vorschlaege[$key_ids] != '_') {
|
||||||
$doc_id = $sachkontoid;
|
|
||||||
} else if ($vorschlaege[$key_ids] != '_') {
|
|
||||||
$doc = $vorschlaege[$key_ids];
|
$doc = $vorschlaege[$key_ids];
|
||||||
$doc = explode('_',$doc);
|
$doc = explode('_',$doc);
|
||||||
$doc_typ = strtolower($doc[0]);
|
$doc_typ = strtolower($doc[0]);
|
||||||
$doc_id = (int) $doc[1];
|
$doc_id = (int) $doc[1];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
switch ($aktion) {
|
||||||
|
case 'vorschlag':
|
||||||
|
if ($doc_id) {
|
||||||
|
$sql = "INSERT INTO `fibu_buchungen` (`von_typ`, `von_id`, `nach_typ`, `nach_id`, `datum`, `betrag`, `waehrung`, `benutzer`, `zeit`, `internebemerkung`) VALUES ('".$von_typ."','".$von_id."','".$doc_typ."', '".$doc_id."', '".$datum."', '".-$betrag."', '".$waehrung."', '".$this->app->User->GetID()."','".$input['zeit'] = date("Y-m-d H:i")."', '')";
|
||||||
|
// echo($sql."\n");
|
||||||
|
$this->app->DB->Insert($sql);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 'sachkonto':
|
||||||
|
$sql = "INSERT INTO `fibu_buchungen` (`von_typ`, `von_id`, `nach_typ`, `nach_id`, `datum`, `betrag`, `waehrung`, `benutzer`, `zeit`, `internebemerkung`) VALUES ('".$von_typ."','".$von_id."','kontorahmen', '".$account_id."', '".$datum."', '".-$betrag."', '".$waehrung."', '".$this->app->User->GetID()."','".$input['zeit'] = date("Y-m-d H:i")."', '')";
|
||||||
|
// echo($sql."\n");
|
||||||
|
$this->app->DB->Insert($sql);
|
||||||
|
break;
|
||||||
|
case 'vorschlag_diff_sachkonto':
|
||||||
|
if ($doc_id) {
|
||||||
|
$doc_saldo = $this->app->erp->GetSaldoDokument($doc_id, $doc_typ);
|
||||||
|
$sql = "INSERT INTO `fibu_buchungen` (`von_typ`, `von_id`, `nach_typ`, `nach_id`, `datum`, `betrag`, `waehrung`, `benutzer`, `zeit`, `internebemerkung`) VALUES ('".$von_typ."','".$von_id."','".$doc_typ."', '".$doc_id."', '".$datum."', '".-$betrag."', '".$waehrung."', '".$this->app->User->GetID()."','".$input['zeit'] = date("Y-m-d H:i")."', '')";
|
||||||
|
// echo($sql."\n");
|
||||||
|
$this->app->DB->Insert($sql);
|
||||||
|
}
|
||||||
|
|
||||||
$datum = $this->app->DB->SelectArr("SELECT datum FROM fibu_buchungen_alle WHERE typ='".$von_typ."' AND id = '".$von_id."'")[0]['datum']; // Get relevant date of source doc
|
// Retrieve counter doc saldo
|
||||||
|
if (!empty($doc_saldo) && ($doc_saldo['waehrung'] == $waehrung) && ($account_id !== null)) {
|
||||||
if ($doc_id) {
|
$diff = $betrag+$doc_saldo['betrag'];
|
||||||
$sql = "INSERT INTO `fibu_buchungen` (`von_typ`, `von_id`, `nach_typ`, `nach_id`, `datum`, `betrag`, `waehrung`, `benutzer`, `zeit`, `internebemerkung`) VALUES ('".$von_typ."','".$von_id."','".$doc_typ."', '".$doc_id."', '".$datum."', '".-$betrag."', '".$waehrung."', '".$this->app->User->GetID()."','".$input['zeit'] = date("Y-m-d H:i")."', '')";
|
$sql = "INSERT INTO `fibu_buchungen` (`von_typ`, `von_id`, `nach_typ`, `nach_id`, `datum`, `betrag`, `waehrung`, `benutzer`, `zeit`, `internebemerkung`) VALUES ('".$doc_typ."','".$doc_id."','kontorahmen', '".$account_id."', '".$datum."', '".-$diff."', '".$waehrung."', '".$this->app->User->GetID()."','".$input['zeit'] = date("Y-m-d H:i")."', '')";
|
||||||
$this->app->DB->Insert($sql);
|
// echo($sql."\n");
|
||||||
// echo($sql."\n");
|
$this->app->DB->Insert($sql);
|
||||||
}
|
} else {
|
||||||
|
$msg .= "<div class=\"warning\">Gegensaldo wurde nicht gebucht. ".count($doc_saldo)." ".$doc_saldo[0]['waehrung']."</div>";
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
} // auswahl
|
} // auswahl
|
||||||
} // foreach
|
} // foreach
|
||||||
} // auswahl
|
} // auswahl
|
||||||
|
Loading…
x
Reference in New Issue
Block a user