Merge branch 'erechnung'

This commit is contained in:
OpenXE 2024-12-02 20:38:44 +01:00
commit 759ba8eb47
4 changed files with 225 additions and 118 deletions

View File

@ -44257,6 +44257,17 @@
"Extra": "", "Extra": "",
"Privileges": "select,insert,update,references", "Privileges": "select,insert,update,references",
"Comment": "" "Comment": ""
},
{
"Field": "rechnung_smarty_template",
"Type": "int(11)",
"Collation": null,
"Null": "NO",
"Key": "",
"Default": "0",
"Extra": "",
"Privileges": "select,insert,update,references",
"Comment": ""
} }
], ],
"keys": [ "keys": [
@ -80276,6 +80287,17 @@
"Extra": "", "Extra": "",
"Privileges": "select,insert,update,references", "Privileges": "select,insert,update,references",
"Comment": "" "Comment": ""
},
{
"Field": "rechnung_smarty_template",
"Type": "int(11)",
"Collation": null,
"Null": "NO",
"Key": "",
"Default": "0",
"Extra": "",
"Privileges": "select,insert,update,references",
"Comment": ""
} }
], ],
"keys": [ "keys": [
@ -84154,6 +84176,17 @@
"Extra": "", "Extra": "",
"Privileges": "select,insert,update,references", "Privileges": "select,insert,update,references",
"Comment": "" "Comment": ""
},
{
"Field": "erechnung",
"Type": "int(1)",
"Collation": null,
"Null": "YES",
"Key": "",
"Default": "0",
"Extra": "",
"Privileges": "select,insert,update,references",
"Comment": ""
} }
], ],
"keys": [ "keys": [

View File

@ -68,6 +68,14 @@
<td> <td>
<input type="text" name="projekt" id="projekt" value="[PROJEKT]" size="20"> <input type="text" name="projekt" id="projekt" value="[PROJEKT]" size="20">
</td> </td>
</tr>
<tr>
<td>
{|Smarty Template für XML-Rechnung|}:
</td>
<td>
<input type="text" name="rechnung_smarty_template" id="rechnung_smarty_template" value="[RECHNUNG_SMARTY_TEMPLATE]" size="20">
</td>
</tr> </tr>
<tr [PREISGRUPPEHIDDEN]> <tr [PREISGRUPPEHIDDEN]>
<td> <td>

View File

@ -150,6 +150,7 @@ class Gruppen {
// Add checks here // Add checks here
$input['projekt'] = $this->app->erp->ReplaceProjekt(true,$input['projekt'],true); // Parameters: Target db?, value, from form? $input['projekt'] = $this->app->erp->ReplaceProjekt(true,$input['projekt'],true); // Parameters: Target db?, value, from form?
$input['rechnung_smarty_template'] = $this->app->erp->ReplaceSmartyTemplate(true,$input['rechnung_smarty_template'],true);
$columns = "id, "; $columns = "id, ";
$values = "$id, "; $values = "$id, ";
@ -186,7 +187,7 @@ class Gruppen {
// Load values again from database // Load values again from database
$dropnbox = "'<img src=./themes/new/images/details_open.png class=details>' AS `open`, CONCAT('<input type=\"checkbox\" name=\"auswahl[]\" value=\"',g.id,'\" />') AS `auswahl`"; $dropnbox = "'<img src=./themes/new/images/details_open.png class=details>' AS `open`, CONCAT('<input type=\"checkbox\" name=\"auswahl[]\" value=\"',g.id,'\" />') AS `auswahl`";
$result = $this->app->DB->SelectArr("SELECT SQL_CALC_FOUND_ROWS g.id, $dropnbox, g.name, g.art, g.kennziffer, g.internebemerkung, g.grundrabatt, g.rabatt1, g.rabatt2, g.rabatt3, g.rabatt4, g.rabatt5, g.sonderrabatt_skonto, g.provision, g.kundennummer, g.partnerid, g.dta_aktiv, g.dta_periode, g.dta_dateiname, g.dta_mail, g.dta_mail_betreff, g.dta_mail_text, g.dtavariablen, g.dta_variante, g.bonus1, g.bonus1_ab, g.bonus2, g.bonus2_ab, g.bonus3, g.bonus3_ab, g.bonus4, g.bonus4_ab, g.bonus5, g.bonus5_ab, g.bonus6, g.bonus6_ab, g.bonus7, g.bonus7_ab, g.bonus8, g.bonus8_ab, g.bonus9, g.bonus9_ab, g.bonus10, g.bonus10_ab, g.zahlungszieltage, g.zahlungszielskonto, g.zahlungszieltageskonto, g.portoartikel, g.portofreiab, g.erweiterteoptionen, g.zentralerechnung, g.zentralregulierung, g.gruppe, g.preisgruppe, g.verbandsgruppe, g.rechnung_name, g.rechnung_strasse, g.rechnung_ort, g.rechnung_plz, g.rechnung_abteilung, g.rechnung_land, g.rechnung_email, g.rechnung_periode, g.rechnung_anzahlpapier, g.rechnung_permail, g.webid, g.portofrei_aktiv, g.projekt, g.objektname, g.objekttyp, g.parameter, g.objektname2, g.objekttyp2, g.parameter2, g.objektname3, g.objekttyp3, g.parameter3, g.kategorie, g.aktiv, g.id FROM gruppen g"." WHERE id=$id"); $result = $this->app->DB->SelectArr("SELECT SQL_CALC_FOUND_ROWS g.id, $dropnbox, g.name, g.art, g.kennziffer, g.internebemerkung, g.grundrabatt, g.rabatt1, g.rabatt2, g.rabatt3, g.rabatt4, g.rabatt5, g.sonderrabatt_skonto, g.provision, g.kundennummer, g.partnerid, g.dta_aktiv, g.dta_periode, g.dta_dateiname, g.dta_mail, g.dta_mail_betreff, g.dta_mail_text, g.dtavariablen, g.dta_variante, g.bonus1, g.bonus1_ab, g.bonus2, g.bonus2_ab, g.bonus3, g.bonus3_ab, g.bonus4, g.bonus4_ab, g.bonus5, g.bonus5_ab, g.bonus6, g.bonus6_ab, g.bonus7, g.bonus7_ab, g.bonus8, g.bonus8_ab, g.bonus9, g.bonus9_ab, g.bonus10, g.bonus10_ab, g.zahlungszieltage, g.zahlungszielskonto, g.zahlungszieltageskonto, g.portoartikel, g.portofreiab, g.erweiterteoptionen, g.zentralerechnung, g.zentralregulierung, g.gruppe, g.preisgruppe, g.verbandsgruppe, g.rechnung_name, g.rechnung_strasse, g.rechnung_ort, g.rechnung_plz, g.rechnung_abteilung, g.rechnung_land, g.rechnung_email, g.rechnung_periode, g.rechnung_anzahlpapier, g.rechnung_permail, g.webid, g.portofrei_aktiv, g.projekt, g.objektname, g.objekttyp, g.parameter, g.objektname2, g.objekttyp2, g.parameter2, g.objektname3, g.objekttyp3, g.parameter3, g.kategorie, g.aktiv, g.rechnung_smarty_template, g.id FROM gruppen g"." WHERE id=$id");
foreach ($result[0] as $key => $value) { foreach ($result[0] as $key => $value) {
$this->app->Tpl->Set(strtoupper($key), $value); $this->app->Tpl->Set(strtoupper($key), $value);
@ -210,7 +211,8 @@ class Gruppen {
*/ */
$this->app->YUI->AutoComplete("kennziffer", "gruppekennziffer"); $this->app->YUI->AutoComplete("rechnung_smarty_template","smarty_template",1);
$this->app->Tpl->Set('RECHNUNG_SMARTY_TEMPLATE', $this->app->erp->ReplaceSmartyTemplate(false,$gruppen_from_db['rechnung_smarty_template'],false));
if ($gruppen_from_db['art'] != 'preisgruppe') { if ($gruppen_from_db['art'] != 'preisgruppe') {
$this->app->Tpl->Set('PREISGRUPPEHIDDEN','hidden'); $this->app->Tpl->Set('PREISGRUPPEHIDDEN','hidden');
@ -315,6 +317,7 @@ class Gruppen {
$input['parameter3'] = $this->app->Secure->GetPOST('parameter3'); $input['parameter3'] = $this->app->Secure->GetPOST('parameter3');
$input['kategorie'] = $this->app->Secure->GetPOST('kategorie'); $input['kategorie'] = $this->app->Secure->GetPOST('kategorie');
$input['aktiv'] = $this->app->Secure->GetPOST('aktiv'); $input['aktiv'] = $this->app->Secure->GetPOST('aktiv');
$input['rechnung_smarty_template'] = $this->app->Secure->GetPOST('rechnung_smarty_template');
return $input; return $input;

View File

@ -417,7 +417,7 @@ class Rechnung extends GenRechnung
{ {
if($id > 0){ if($id > 0){
$rechnungarr = $this->app->DB->SelectRow( $rechnungarr = $this->app->DB->SelectRow(
"SELECT status,zahlungsstatus FROM rechnung WHERE id='$id' LIMIT 1" "SELECT status,zahlungsstatus,erechnung,belegnr FROM rechnung WHERE id='$id' LIMIT 1"
); );
} }
$status = ''; $status = '';
@ -548,11 +548,20 @@ class Rechnung extends GenRechnung
</select>&nbsp; </select>&nbsp;
"; ";
$menu .= " if (!empty($rechnungarr['belegnr'])) {
if ($rechnungarr['erechnung']) {
$downloadicon = "<a href=\"index.php?module=rechnung&action=xml&id=%value%\"><img border=\"0\" src=\"./themes/new/images/xml.svg\" title=\"XML\"></a>";
} else {
$downloadicon = "<a href=\"index.php?module=rechnung&action=pdf&id=%value%\"><img border=\"0\" src=\"./themes/new/images/pdf.svg\" title=\"PDF\"></a>";
}
} else {
$downloadicon = '';
}
<a href=\"index.php?module=rechnung&action=pdf&id=%value%\"><img border=\"0\" src=\"./themes/new/images/pdf.svg\" title=\"PDF\"></a> $menu .= $downloadicon;
<a href=\"index.php?module=rechnung&action=xml&id=%value%\"><img border=\"0\" src=\"./themes/new/images/xml.svg\" title=\"XML\"></a>
<!-- <a href=\"index.php?module=rechnung&action=edit&id=%value%\" title=\"Bearbeiten\"><img border=\"0\" src=\"./themes/new/images/edit.svg\"></a> $menu .=
"<!-- <a href=\"index.php?module=rechnung&action=edit&id=%value%\" title=\"Bearbeiten\"><img border=\"0\" src=\"./themes/new/images/edit.svg\"></a>
<a onclick=\"if(!confirm('Wirklich stornieren?')) return false; else window.location.href='index.php?module=rechnung&action=delete&id=%value%';\" title=\"Stornieren\"> <a onclick=\"if(!confirm('Wirklich stornieren?')) return false; else window.location.href='index.php?module=rechnung&action=delete&id=%value%';\" title=\"Stornieren\">
<img src=\"./themes/new/images/delete.svg\" border=\"0\"></a> <img src=\"./themes/new/images/delete.svg\" border=\"0\"></a>
<a onclick=\"if(!confirm('Wirklich kopieren?')) return false; else window.location.href='index.php?module=rechnung&action=copy&id=%value%';\" title=\"Kopieren\"> <a onclick=\"if(!confirm('Wirklich kopieren?')) return false; else window.location.href='index.php?module=rechnung&action=copy&id=%value%';\" title=\"Kopieren\">
@ -1300,6 +1309,11 @@ class Rechnung extends GenRechnung
$positionen = $this->app->DB->SelectArr(" $positionen = $this->app->DB->SelectArr("
SELECT * FROM rechnung_position WHERE rechnung = $id ORDER BY sort ASC SELECT * FROM rechnung_position WHERE rechnung = $id ORDER BY sort ASC
"); ");
if (empty($positionen)) {
throw new exception("Rechnung enthält keine Positionen!");
}
$steuern = Array(); $steuern = Array();
foreach ($positionen as $key => $position) { foreach ($positionen as $key => $position) {
$this->app->erp->GetSteuerPosition('rechnung', $position['id'], $steuersatz, $steuertext, $erloes); $this->app->erp->GetSteuerPosition('rechnung', $position['id'], $steuersatz, $steuertext, $erloes);
@ -2563,32 +2577,81 @@ class Rechnung extends GenRechnung
$usereditid = $this->app->User->GetID(); $usereditid = $this->app->User->GetID();
} }
if (!empty($adresse)) {
// Check XML Smarty template
$erechnung = false;
$sql = "SELECT rechnung_smarty_template FROM adresse WHERE id = '".$adresse."'";
$rechnung_smarty_template = $this->app->DB->Select($sql);
if (!empty($rechnung_smarty_template)) {
$erechnung = true;
} else {
$sql = "SELECT id FROM gruppen WHERE rechnung_smarty_template <> '' and aktiv";
$gruppen = $this->app->DB->SelectArr($sql);
foreach ($gruppen as $gruppe) {
if ($this->app->erp->IsAdresseInGruppe($adresse,$gruppe['id'])) {
$erechnung = true;
}
}
}
}
if($this->app->erp->StandardZahlungsweise($projekt)==='rechnung') if($this->app->erp->StandardZahlungsweise($projekt)==='rechnung')
{ {
$this->app->DB->Insert("INSERT INTO rechnung (id,datum,bearbeiter,firma,belegnr,zahlungsweise, $zahlungszieltage = $this->app->erp->ZahlungsZielTage($projekt);
zahlungszieltage, $zahlungszieltageskonto = $this->app->erp->ZahlungsZielTageSkonto($projekt);
zahlungszieltageskonto, $zahlungszielskonto = $this->app->erp->ZahlungsZielSkonto($projekt);
zahlungszielskonto,
lieferdatum,
status,projekt,adresse,auftragid,ohne_briefpapier,angelegtam,usereditid,abweichendebezeichnung)
VALUES ('',NOW(),'','".$this->app->User->GetFirma()."','$belegmax','".$this->app->erp->StandardZahlungsweise($projekt)."',
'".$this->app->erp->ZahlungsZielTage($projekt)."',
'".$this->app->erp->ZahlungsZielTageSkonto($projekt)."',
'".$this->app->erp->ZahlungsZielSkonto($projekt)."',NOW(),
'angelegt','$projekt','$adresse',0,'".$ohnebriefpapier."',NOW(),'$usereditid','$abweichendebezeichnung')");
} else { } else {
$this->app->DB->Insert("INSERT INTO rechnung (id,datum,bearbeiter,firma,belegnr,zahlungsweise, $zahlungszieltage = 0;
$zahlungszieltageskonto = 0;
$zahlungszielskonto = 0;
}
$this->app->DB->Insert("INSERT INTO rechnung (
id,
datum,
bearbeiter,
firma,
belegnr,
zahlungsweise,
zahlungszieltage, zahlungszieltage,
zahlungszieltageskonto, zahlungszieltageskonto,
zahlungszielskonto, zahlungszielskonto,
lieferdatum, lieferdatum,
status,projekt,adresse,auftragid,ohne_briefpapier,angelegtam,usereditid,abweichendebezeichnung) status,
VALUES ('',NOW(),'','".$this->app->User->GetFirma()."','$belegmax','".$this->app->erp->StandardZahlungsweise($projekt)."', projekt,
'0', adresse,
'0', auftragid,
'0',NOW(), ohne_briefpapier,
'angelegt','$projekt','$adresse',0,'".$ohnebriefpapier."',NOW(),'$usereditid','$abweichendebezeichnung')"); angelegtam,
} usereditid,
abweichendebezeichnung,
erechnung
)
VALUES (
'',
NOW(),
'',
'".$this->app->User->GetFirma()."',
'$belegmax',
'".$this->app->erp->StandardZahlungsweise($projekt)."',
'".$zahlungszieltage."',
'".$zahlungszieltageskonto."',
'".$zahlungszielskonto."',
NOW(),
'angelegt',
'$projekt',
'$adresse',
0,
'".$ohnebriefpapier."',
NOW(),
'$usereditid',
'$abweichendebezeichnung',
'$erechnung'
)"
);
$id = $this->app->DB->GetInsertID(); $id = $this->app->DB->GetInsertID();
$this->app->erp->CheckVertrieb($id,'rechnung'); $this->app->erp->CheckVertrieb($id,'rechnung');