mirror of
https://github.com/OpenXE-org/OpenXE.git
synced 2025-01-24 03:41:13 +01:00
Merge branch 'xmlrechnung'
This commit is contained in:
commit
fc3477b35d
@ -6844,10 +6844,7 @@ r.land as land, p.abkuerzung as projekt, r.zahlungsweise as zahlungsweise,
|
|||||||
as fehlt,
|
as fehlt,
|
||||||
if(r.status = 'storniert' AND r.teilstorno = 1,'TEILSTORNO',UPPER(r.status)) as status
|
if(r.status = 'storniert' AND r.teilstorno = 1,'TEILSTORNO',UPPER(r.status)) as status
|
||||||
".(!empty($zusatzcols)?','.implode(', ',$zusatzcols):'').",
|
".(!empty($zusatzcols)?','.implode(', ',$zusatzcols):'').",
|
||||||
IF(r.xmlrechnung,
|
".$this->GetRechnungFileDownloadLinkIconSQL().",
|
||||||
CONCAT('<a href=\"index.php?module=rechnung&action=xml&id=',r.id,'\"><img src=\"themes/".$this->app->Conf->WFconf['defaulttheme']."/images/xml.svg\" border=\"0\">'),
|
|
||||||
CONCAT('<a href=\"index.php?module=rechnung&action=pdf&id=',r.id,'\"><img src=\"themes/".$this->app->Conf->WFconf['defaulttheme']."/images/pdf.svg\" border=\"0\">')
|
|
||||||
),
|
|
||||||
r.id
|
r.id
|
||||||
FROM rechnung r LEFT JOIN projekt p ON p.id=r.projekt LEFT JOIN adresse adr ON r.adresse=adr.id LEFT JOIN auftrag au ON au.id = r.auftragid ";
|
FROM rechnung r LEFT JOIN projekt p ON p.id=r.projekt LEFT JOIN adresse adr ON r.adresse=adr.id LEFT JOIN auftrag au ON au.id = r.auftragid ";
|
||||||
if(isset($parameter['artikel']) && !empty($parameter['artikel'])) {
|
if(isset($parameter['artikel']) && !empty($parameter['artikel'])) {
|
||||||
@ -15941,4 +15938,24 @@ function IframeDialog($width, $height, $src = "") {
|
|||||||
return 'convert(cast(convert('.$field.' using latin1) as binary) using utf8)';
|
return 'convert(cast(convert('.$field.' using latin1) as binary) using utf8)';
|
||||||
//return $field.' COLLATE utf8_general_ci'; ersetzt Original
|
//return $field.' COLLATE utf8_general_ci'; ersetzt Original
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function GetRechnungFileDownloadLinkIconSQL($tablename = 'r') {
|
||||||
|
return(
|
||||||
|
"IF(".$tablename.".xmlrechnung,
|
||||||
|
CONCAT('<a href=\"index.php?module=rechnung&action=xml&id=',".$tablename.".id,'\"><img src=\"themes/".$this->app->Conf->WFconf['defaulttheme']."/images/xml.svg\" border=\"0\">'),
|
||||||
|
CONCAT('<a href=\"index.php?module=rechnung&action=pdf&id=',".$tablename.".id,'\"><img src=\"themes/".$this->app->Conf->WFconf['defaulttheme']."/images/pdf.svg\" border=\"0\">')
|
||||||
|
)"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function GetRechnungFileDownloadLinkIcon($id) {
|
||||||
|
$xmlrechnung = $this->app->DB->SelectRow("SELECT belegnr, xmlrechnung FROM rechnung WHERE id = '".$id."' LIMIT 1");
|
||||||
|
if ($xmlrechnung['belegnr'] == '') {
|
||||||
|
return('');
|
||||||
|
} else if ($xmlrechnung['xmlrechnung']) {
|
||||||
|
return("<a href=\"index.php?module=rechnung&action=xml&id=%value%\"><img border=\"0\" src=\"./themes/new/images/xml.svg\" title=\"XML\"></a>");
|
||||||
|
} else {
|
||||||
|
return("<a href=\"index.php?module=rechnung&action=pdf&id=%value%\"><img border=\"0\" src=\"./themes/new/images/pdf.svg\" title=\"PDF\"></a>");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -2199,6 +2199,18 @@ public function NavigationHooks(&$menu)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Rechnung special treatment because of XML
|
||||||
|
function RechnungArchivieren($id) {
|
||||||
|
$sql = "SELECT xmlrechnung FROM rechnung WHERE id = '".$id."' LIMIT 1";
|
||||||
|
$xmlrechnung = $this->app->DB->Select($sql);
|
||||||
|
if ($xmlrechnung) {
|
||||||
|
$rechnungsmodul = $this->app->loadModule('rechnung', false);
|
||||||
|
return($rechnungsmodul->RechnungArchiviereXML($id));
|
||||||
|
} else {
|
||||||
|
$this->PDFArchivieren('rechnung',$id,true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// @refactor in Location Klasse
|
// @refactor in Location Klasse
|
||||||
function UrlOrigin($s, $use_forwarded_host=false)
|
function UrlOrigin($s, $use_forwarded_host=false)
|
||||||
{
|
{
|
||||||
@ -3267,7 +3279,7 @@ function LieferscheinEinlagern($id,$grund="Lieferschein Einlagern", $lpiids = nu
|
|||||||
);
|
);
|
||||||
$this->app->erp->ANABREGSNeuberechnen($invoice['id'], 'rechnung');
|
$this->app->erp->ANABREGSNeuberechnen($invoice['id'], 'rechnung');
|
||||||
if($invoice['schreibschutz']) {
|
if($invoice['schreibschutz']) {
|
||||||
$this->app->erp->PDFArchivieren('rechunng', $invoice['id'], true);
|
$this->app->erp->RechnungArchivieren($invoice['id']);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -15234,20 +15246,21 @@ function Gegenkonto($ust_befreit,$ustid='', $doctype = '', $doctypeId = 0)
|
|||||||
}
|
}
|
||||||
|
|
||||||
$rechnungarr = $this->app->DB->SelectRow(
|
$rechnungarr = $this->app->DB->SelectRow(
|
||||||
"SELECT adresse, email, name,belegnr,projekt,sprache,schreibschutz,zuarchivieren
|
"SELECT adresse, email, name,belegnr,projekt,sprache,schreibschutz,zuarchivieren,xmlrechnung
|
||||||
FROM rechnung WHERE id='$id' LIMIT 1"
|
FROM rechnung WHERE id='$id' LIMIT 1"
|
||||||
);
|
);
|
||||||
if(empty($rechnungarr)) {
|
if(empty($rechnungarr)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if(!empty($rechnungarr['schreibschutz']) && !empty($rechnungarr['zuarchivieren'])) {
|
if(!empty($rechnungarr['schreibschutz']) && !empty($rechnungarr['zuarchivieren'])) {
|
||||||
$this->app->erp->PDFArchivieren('rechnung', $id, true);
|
$this->app->erp->RechnungArchivieren($id);
|
||||||
}
|
}
|
||||||
$adresse = $rechnungarr['adresse'];
|
$adresse = $rechnungarr['adresse'];
|
||||||
$to = $rechnungarr['email'];
|
$to = $rechnungarr['email'];
|
||||||
$to_name = $rechnungarr['name'];
|
$to_name = $rechnungarr['name'];
|
||||||
$belegnr = $rechnungarr['belegnr'];
|
$belegnr = $rechnungarr['belegnr'];
|
||||||
$projekt = $rechnungarr['projekt'];
|
$projekt = $rechnungarr['projekt'];
|
||||||
|
$xmlrechnung = $rechnungarr['xmlrechnung'];
|
||||||
|
|
||||||
$sprache = $rechnungarr['sprache'];
|
$sprache = $rechnungarr['sprache'];
|
||||||
if($sprache=='' && $adresse > 0) {
|
if($sprache=='' && $adresse > 0) {
|
||||||
@ -15272,21 +15285,27 @@ function Gegenkonto($ust_befreit,$ustid='', $doctype = '', $doctypeId = 0)
|
|||||||
$betreff = $this->ParseUserVars('rechnung',$id,$betreff); // 19.01.2018 eingefuegt BW
|
$betreff = $this->ParseUserVars('rechnung',$id,$betreff); // 19.01.2018 eingefuegt BW
|
||||||
if($id > 0)
|
if($id > 0)
|
||||||
{
|
{
|
||||||
$this->app->erp->BriefpapierHintergrunddisable = false;
|
|
||||||
if(class_exists('RechnungPDFCustom'))
|
|
||||||
{
|
|
||||||
$Brief = new RechnungPDFCustom($this->app,$projekt);
|
|
||||||
}else{
|
|
||||||
$Brief = new RechnungPDF($this->app,$projekt);
|
|
||||||
}
|
|
||||||
$Brief->GetRechnung($id);
|
|
||||||
$arrtmpfile[] = $Brief->displayTMP();
|
|
||||||
|
|
||||||
if(!$Brief->DocumentArchiviert()) {
|
if (!$xmlrechnung) {
|
||||||
$Brief->ArchiviereDocument(true, true);
|
$this->app->erp->BriefpapierHintergrunddisable = false;
|
||||||
|
if(class_exists('RechnungPDFCustom'))
|
||||||
|
{
|
||||||
|
$Brief = new RechnungPDFCustom($this->app,$projekt);
|
||||||
|
}else{
|
||||||
|
$Brief = new RechnungPDF($this->app,$projekt);
|
||||||
|
}
|
||||||
|
$Brief->GetRechnung($id);
|
||||||
|
$arrtmpfile[] = $Brief->displayTMP();
|
||||||
|
|
||||||
|
if(!$Brief->DocumentArchiviert()) {
|
||||||
|
$Brief->ArchiviereDocument(true, true);
|
||||||
|
}
|
||||||
|
$md5arr[] = @md5_file($arrtmpfile[(!empty($arrtmpfile)?count($arrtmpfile):0)-1]);
|
||||||
|
} else {
|
||||||
|
$arrtmpfile = Array();
|
||||||
|
$md5arr = Array();
|
||||||
}
|
}
|
||||||
|
|
||||||
$md5arr[] = @md5_file($arrtmpfile[(!empty($arrtmpfile)?count($arrtmpfile):0)-1]);
|
|
||||||
// anhaenge automatisch mitversenden
|
// anhaenge automatisch mitversenden
|
||||||
$resultdateien = $this->app->DB->SelectArr("SELECT datei FROM datei_stichwoerter WHERE objekt LIKE 'Rechnung' AND parameter='$id'");
|
$resultdateien = $this->app->DB->SelectArr("SELECT datei FROM datei_stichwoerter WHERE objekt LIKE 'Rechnung' AND parameter='$id'");
|
||||||
$cResultdateien = !empty($resultdateien)?count($resultdateien):0;
|
$cResultdateien = !empty($resultdateien)?count($resultdateien):0;
|
||||||
@ -23477,54 +23496,63 @@ function ChargenMHDAuslagern($artikel, $menge, $lagerplatztyp, $lpid,$typ,$wert,
|
|||||||
if($typ=="rechnung")
|
if($typ=="rechnung")
|
||||||
{
|
{
|
||||||
// sende
|
// sende
|
||||||
$this->app->erp->BriefpapierHintergrunddisable = !$this->app->erp->BriefpapierHintergrunddisable;
|
$xmlrechnug = $this->app->DB->Select("SELECT xmlrechnung FROM rechnung WHERE id ='".$id."' LIMIT 1");
|
||||||
if(class_exists('RechnungPDFCustom'))
|
if ($xmlrechnung) {
|
||||||
{
|
$xmlrechnungresult = $this->app->erp->GetXMLRechnung($id);
|
||||||
$Brief = new RechnungPDFCustom($this->app,$projektbriefpapier);
|
if ($xmlrechnungresult['success']) {
|
||||||
}else{
|
$tmpfile = $xmlrechnungresult['xml'];
|
||||||
$Brief = new RechnungPDF($this->app,$projektbriefpapier);
|
} else {
|
||||||
}
|
throw new exception("XML Rechnung fehlgeschlagen!");
|
||||||
$Brief->GetRechnung($id);
|
}
|
||||||
|
} else {
|
||||||
|
$this->app->erp->BriefpapierHintergrunddisable = !$this->app->erp->BriefpapierHintergrunddisable;
|
||||||
|
if(class_exists('RechnungPDFCustom'))
|
||||||
|
{
|
||||||
|
$Brief = new RechnungPDFCustom($this->app,$projektbriefpapier);
|
||||||
|
}else{
|
||||||
|
$Brief = new RechnungPDF($this->app,$projektbriefpapier);
|
||||||
|
}
|
||||||
|
$Brief->GetRechnung($id);
|
||||||
|
|
||||||
if(isset($sammelpdf))
|
if(isset($sammelpdf))
|
||||||
{
|
{
|
||||||
foreach($sammelpdf as $dat)
|
foreach($sammelpdf as $dat)
|
||||||
{
|
{
|
||||||
$Brief->AddPDF($dat);
|
$Brief->AddPDF($dat);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//$Brief->ArchiviereDocument();
|
//$Brief->ArchiviereDocument();
|
||||||
$tmpfile = $Brief->displayTMP();
|
$tmpfile = $Brief->displayTMP();
|
||||||
$Brief->ArchiviereDocument(true);
|
$Brief->ArchiviereDocument(true);
|
||||||
unlink($tmpfile);
|
unlink($tmpfile);
|
||||||
$this->app->erp->BriefpapierHintergrunddisable = !$this->app->erp->BriefpapierHintergrunddisable;
|
$this->app->erp->BriefpapierHintergrunddisable = !$this->app->erp->BriefpapierHintergrunddisable;
|
||||||
if(class_exists('RechnungPDFCustom'))
|
if(class_exists('RechnungPDFCustom'))
|
||||||
{
|
{
|
||||||
$Brief = new RechnungPDFCustom($this->app,$projektbriefpapier);
|
$Brief = new RechnungPDFCustom($this->app,$projektbriefpapier);
|
||||||
}else{
|
}else{
|
||||||
$Brief = new RechnungPDF($this->app,$projektbriefpapier);
|
$Brief = new RechnungPDF($this->app,$projektbriefpapier);
|
||||||
|
}
|
||||||
|
$Brief->GetRechnung($id);
|
||||||
|
$tmpfile = $Brief->displayTMP();
|
||||||
|
$Brief->ArchiviereDocument(true);
|
||||||
|
if(isset($sammelpdf))
|
||||||
|
{
|
||||||
|
unlink($tmpfile);
|
||||||
|
if(class_exists('RechnungPDFCustom'))
|
||||||
|
{
|
||||||
|
$Brief = new RechnungPDFCustom($this->app,$projektbriefpapier);
|
||||||
|
}else{
|
||||||
|
$Brief = new RechnungPDF($this->app,$projektbriefpapier);
|
||||||
|
}
|
||||||
|
$Brief->GetRechnung($id);
|
||||||
|
foreach($sammelpdf as $dat)
|
||||||
|
{
|
||||||
|
$Brief->AddPDF($dat);
|
||||||
|
}
|
||||||
|
$tmpfile = $Brief->displayTMP();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
$Brief->GetRechnung($id);
|
|
||||||
$tmpfile = $Brief->displayTMP();
|
|
||||||
$Brief->ArchiviereDocument(true);
|
|
||||||
if(isset($sammelpdf))
|
|
||||||
{
|
|
||||||
unlink($tmpfile);
|
|
||||||
if(class_exists('RechnungPDFCustom'))
|
|
||||||
{
|
|
||||||
$Brief = new RechnungPDFCustom($this->app,$projektbriefpapier);
|
|
||||||
}else{
|
|
||||||
$Brief = new RechnungPDF($this->app,$projektbriefpapier);
|
|
||||||
}
|
|
||||||
$Brief->GetRechnung($id);
|
|
||||||
foreach($sammelpdf as $dat)
|
|
||||||
{
|
|
||||||
$Brief->AddPDF($dat);
|
|
||||||
}
|
|
||||||
$tmpfile = $Brief->displayTMP();
|
|
||||||
}
|
|
||||||
|
|
||||||
//$Brief->ArchiviereDocument();
|
//$Brief->ArchiviereDocument();
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -29219,7 +29247,6 @@ function Firmendaten($field,$projekt="")
|
|||||||
|
|
||||||
function SetXMLRechnung($id)
|
function SetXMLRechnung($id)
|
||||||
{
|
{
|
||||||
/** @var Preisanfrage $obj */
|
|
||||||
$obj = $this->app->erp->LoadModul('rechnung');
|
$obj = $this->app->erp->LoadModul('rechnung');
|
||||||
if(!empty($obj) && method_exists($obj,'SetXMLRechnung')) {
|
if(!empty($obj) && method_exists($obj,'SetXMLRechnung')) {
|
||||||
return $obj->SetXMLRechnung($id);
|
return $obj->SetXMLRechnung($id);
|
||||||
@ -29227,6 +29254,15 @@ function Firmendaten($field,$projekt="")
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function GetXMLRechnung($id)
|
||||||
|
{
|
||||||
|
$obj = $this->app->erp->LoadModul('rechnung');
|
||||||
|
if(!empty($obj) && method_exists($obj,'RechnungSmarty')) {
|
||||||
|
return $obj->RechnungSmarty(id: $id, returnvalue: true);
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
function BelegFreigabe($beleg,$id)
|
function BelegFreigabe($beleg,$id)
|
||||||
{
|
{
|
||||||
if($id <= 0 || empty($beleg)) {
|
if($id <= 0 || empty($beleg)) {
|
||||||
@ -33043,7 +33079,6 @@ function Firmendaten($field,$projekt="")
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function DeleteBestellung($id)
|
function DeleteBestellung($id)
|
||||||
{
|
{
|
||||||
/** @var Bestellung $obj */
|
/** @var Bestellung $obj */
|
||||||
@ -33054,7 +33089,6 @@ function Firmendaten($field,$projekt="")
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function CreateRechnung($adresse="")
|
function CreateRechnung($adresse="")
|
||||||
{
|
{
|
||||||
/** @var Rechnung $obj */
|
/** @var Rechnung $obj */
|
||||||
@ -33064,7 +33098,6 @@ function Firmendaten($field,$projekt="")
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public function GetStandardWaehrung($projekt=0)
|
public function GetStandardWaehrung($projekt=0)
|
||||||
{
|
{
|
||||||
if(is_array($projekt) && isset($projekt['eigenesteuer']) && isset($projekt['waehrung'])) {
|
if(is_array($projekt) && isset($projekt['eigenesteuer']) && isset($projekt['waehrung'])) {
|
||||||
|
@ -1640,6 +1640,7 @@ class Auftrag extends GenAuftrag
|
|||||||
*
|
*
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
|
/* XENTRAL Legacy
|
||||||
public function AuftragTrackingTabelle($id)
|
public function AuftragTrackingTabelle($id)
|
||||||
{
|
{
|
||||||
$table = new EasyTable($this->app);
|
$table = new EasyTable($this->app);
|
||||||
@ -1676,6 +1677,7 @@ class Auftrag extends GenAuftrag
|
|||||||
|
|
||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
function AuftragPDFfromArchiv()
|
function AuftragPDFfromArchiv()
|
||||||
{
|
{
|
||||||
@ -2117,26 +2119,28 @@ class Auftrag extends GenAuftrag
|
|||||||
|
|
||||||
/* rechnungen */
|
/* rechnungen */
|
||||||
|
|
||||||
|
$link_zur_rechnung = "CONCAT('<a href=\"index.php?module=rechnung&action=edit&id=',r.id,'\" target=\"_blank\"',if(r.status='storniert',' title=\"Rechnung storniert\"><s>','>'),if(r.belegnr='0' OR r.belegnr='','ENTWURF',r.belegnr),if(r.status='storniert','</s>',''),'</a> ',".$this->app->YUI->GetRechnungFileDownloadLinkIconSQL().",' <a href=\"index.php?module=rechnung&action=edit&id=',r.id,'\" target=\"_blank\"><img src=\"./themes/new/images/edit.svg\" title=\"Rechnung bearbeiten\" border=\"0\"></a>')";
|
||||||
|
|
||||||
$sammelrechnungcheck = $this->app->DB->Select("SELECT * FROM sammelrechnung_position LIMIT 1");
|
$sammelrechnungcheck = $this->app->DB->Select("SELECT * FROM sammelrechnung_position LIMIT 1");
|
||||||
if($sammelrechnungcheck) {
|
if($sammelrechnungcheck) {
|
||||||
$rechnung = $this->app->DB->SelectPairs(
|
$rechnung = $this->app->DB->SelectPairs(
|
||||||
"SELECT
|
"SELECT
|
||||||
r.id, CONCAT('<a href=\"index.php?module=rechnung&action=edit&id=',r.id,'\" target=\"_blank\"',if(r.status='storniert',' title=\"Rechnung storniert\"><s>','>'),if(r.belegnr='0' OR r.belegnr='','ENTWURF',r.belegnr),if(r.status='storniert','</s>',''),'</a> <a href=\"index.php?module=rechnung&action=pdf&id=',r.id,'\" target=\"_blank\"><img src=\"./themes/new/images/pdf.svg\" title=\"Rechnung PDF\" border=\"0\"></a>
|
r.id,
|
||||||
<a href=\"index.php?module=rechnung&action=edit&id=',r.id,'\" target=\"_blank\"><img src=\"./themes/new/images/edit.svg\" title=\"Rechnung bearbeiten\" border=\"0\"></a>') as rechnung
|
".$link_zur_rechnung." as rechnung
|
||||||
FROM rechnung r
|
FROM rechnung r
|
||||||
WHERE r.auftragid='$id'
|
WHERE r.auftragid='$id'
|
||||||
union
|
union
|
||||||
SELECT
|
SELECT
|
||||||
r.id,CONCAT('<a href=\"index.php?module=rechnung&action=edit&id=',r.id,'\" target=\"_blank\"',if(r.status='storniert',' title=\"Rechnung storniert\"><s>','>'),if(r.belegnr='0' OR r.belegnr='','ENTWURF',r.belegnr),if(r.status='storniert','</s>',''),'</a> <a href=\"index.php?module=rechnung&action=pdf&id=',r.id,'\" target=\"_blank\"><img src=\"./themes/new/images/pdf.svg\" title=\"Rechnung PDF\" border=\"0\"></a>
|
r.id,
|
||||||
<a href=\"index.php?module=rechnung&action=edit&id=',r.id,'\" target=\"_blank\"><img src=\"./themes/new/images/edit.svg\" title=\"Rechnung bearbeiten\" border=\"0\"></a>') as rechnung
|
".$link_zur_rechnung." as rechnung
|
||||||
FROM rechnung r
|
FROM rechnung r
|
||||||
INNER JOIN sammelrechnung_position s ON r.id = s.rechnung
|
INNER JOIN sammelrechnung_position s ON r.id = s.rechnung
|
||||||
INNER JOIN auftrag_position p ON s.auftrag_position_id = p.id
|
INNER JOIN auftrag_position p ON s.auftrag_position_id = p.id
|
||||||
WHERE p.auftrag='$id'
|
WHERE p.auftrag='$id'
|
||||||
union
|
union
|
||||||
SELECT
|
SELECT
|
||||||
r.id,CONCAT('<a href=\"index.php?module=rechnung&action=edit&id=',r.id,'\" target=\"_blank\"',if(r.status='storniert',' title=\"Rechnung storniert\"><s>','>'),if(r.belegnr='0' OR r.belegnr='','ENTWURF',r.belegnr),if(r.status='storniert','</s>',''),'</a> <a href=\"index.php?module=rechnung&action=pdf&id=',r.id,'\" target=\"_blank\"><img src=\"./themes/new/images/pdf.svg\" title=\"Rechnung PDF\" border=\"0\"></a>
|
r.id,
|
||||||
<a href=\"index.php?module=rechnung&action=edit&id=',r.id,'\" target=\"_blank\"><img src=\"./themes/new/images/edit.svg\" title=\"Rechnung bearbeiten\" border=\"0\"></a>') as rechnung
|
".$link_zur_rechnung." as rechnung
|
||||||
FROM rechnung r
|
FROM rechnung r
|
||||||
INNER JOIN sammelrechnung_position s ON r.id = s.rechnung
|
INNER JOIN sammelrechnung_position s ON r.id = s.rechnung
|
||||||
INNER JOIN lieferschein_position lp ON lp.id = s.lieferschein_position_id
|
INNER JOIN lieferschein_position lp ON lp.id = s.lieferschein_position_id
|
||||||
@ -2158,9 +2162,8 @@ class Auftrag extends GenAuftrag
|
|||||||
else{
|
else{
|
||||||
$rechnung = $this->app->DB->SelectPairs(
|
$rechnung = $this->app->DB->SelectPairs(
|
||||||
"SELECT
|
"SELECT
|
||||||
r.id, CONCAT('<a href=\"index.php?module=rechnung&action=edit&id=',r.id,'\" target=\"_blank\"',if(r.status='storniert',' title=\"Rechnung storniert\"><s>','>'),if(r.belegnr='0' OR r.belegnr='','ENTWURF',r.belegnr),if(r.status='storniert','</s>',''),'</a> <a href=\"index.php?module=rechnung&action=pdf&id=',r.id,'\" target=\"_blank\"><img src=\"./themes/new/images/pdf.svg\" title=\"Rechnung PDF\" border=\"0\"></a>
|
r.id,
|
||||||
<a href=\"index.php?module=rechnung&action=edit&id=',r.id,'\" target=\"_blank\"><img src=\"./themes/new/images/edit.svg\" title=\"Rechnung bearbeiten\" border=\"0\"></a>'
|
".$link_zur_rechnung." as rechnung
|
||||||
) as rechnung
|
|
||||||
FROM rechnung r
|
FROM rechnung r
|
||||||
WHERE r.auftragid='$id'"
|
WHERE r.auftragid='$id'"
|
||||||
);
|
);
|
||||||
@ -2176,10 +2179,9 @@ class Auftrag extends GenAuftrag
|
|||||||
if(!$rechnung) {
|
if(!$rechnung) {
|
||||||
$rechnung = $this->app->DB->SelectPairs(
|
$rechnung = $this->app->DB->SelectPairs(
|
||||||
"SELECT
|
"SELECT
|
||||||
r.id, CONCAT('<a href=\"index.php?module=rechnung&action=edit&id=',r.id,'\" target=\"_blank\"',if(r.status='storniert',' title=\"Rechnung storniert\"><s>','>'),if(r.belegnr='0' OR r.belegnr='','ENTWURF',r.belegnr),if(r.status='storniert','</s>',''),'</a> <a href=\"index.php?module=rechnung&action=pdf&id=',r.id,'\" target=\"_blank\"><img src=\"./themes/new/images/pdf.svg\" title=\"Rechnung PDF\" border=\"0\"></a>
|
r.id,
|
||||||
<a href=\"index.php?module=rechnung&action=edit&id=',r.id,'\" target=\"_blank\"><img src=\"./themes/new/images/edit.svg\" title=\"Rechnung bearbeiten\" border=\"0\"></a>'
|
".$link_zur_rechnung." as rechnung
|
||||||
) as rechnung
|
FROM rechnung r
|
||||||
FROM rechnung r
|
|
||||||
INNER JOIN auftrag a ON a.rechnungid = r.id
|
INNER JOIN auftrag a ON a.rechnungid = r.id
|
||||||
WHERE a.id='$id'
|
WHERE a.id='$id'
|
||||||
");
|
");
|
||||||
@ -5071,7 +5073,7 @@ class Auftrag extends GenAuftrag
|
|||||||
foreach($lieferscheine as $deliveryNoteId => $deliveryNoteNumber) {
|
foreach($lieferscheine as $deliveryNoteId => $deliveryNoteNumber) {
|
||||||
$optional .= " <input type=\"button\" value=\"LS "
|
$optional .= " <input type=\"button\" value=\"LS "
|
||||||
.$deliveryNoteNumber
|
.$deliveryNoteNumber
|
||||||
."\" onclick=\"window.location.href='index.php?module=lieferschein&action=pdf&id="
|
."\" onclick=\"window.location.href='index.php?module=lieferschein&action=edit&id="
|
||||||
.$deliveryNoteId."'\">";
|
.$deliveryNoteId."'\">";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -5084,7 +5086,7 @@ class Auftrag extends GenAuftrag
|
|||||||
foreach($rechnungen as $invoiceId => $invoiceNumber) {
|
foreach($rechnungen as $invoiceId => $invoiceNumber) {
|
||||||
$optional .= " <input type=\"button\" value=\"RE "
|
$optional .= " <input type=\"button\" value=\"RE "
|
||||||
.$invoiceNumber
|
.$invoiceNumber
|
||||||
."\" onclick=\"window.location.href='index.php?module=rechnung&action=pdf&id="
|
."\" onclick=\"window.location.href='index.php?module=rechnung&action=edit&id="
|
||||||
.$invoiceId."'\">";
|
.$invoiceId."'\">";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -5260,11 +5262,13 @@ class Auftrag extends GenAuftrag
|
|||||||
$this->app->Tpl->Add('AUFTRAGSDOKUMENTE',"</fieldset>");
|
$this->app->Tpl->Add('AUFTRAGSDOKUMENTE',"</fieldset>");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* XENTRAL Legacy
|
||||||
//suche alle LS zu diesem Auftrag
|
//suche alle LS zu diesem Auftrag
|
||||||
if($auftragsnummer>0) {
|
if($auftragsnummer>0) {
|
||||||
$trackingInfo = $this->AuftragTrackingTabelle(empty($deliveryNoteIds)?0: $id);
|
$trackingInfo = $this->AuftragTrackingTabelle(empty($deliveryNoteIds)?0: $id);
|
||||||
$this->app->Tpl->Set('VERSAND', $trackingInfo);
|
$this->app->Tpl->Set('VERSAND', $trackingInfo);
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
// UST
|
// UST
|
||||||
$ust_ok = $orderRow['ust_ok'];//$this->app->DB->Select("SELECT ust_ok FROM auftrag WHERE id='$id' LIMIT 1");
|
$ust_ok = $orderRow['ust_ok'];//$this->app->DB->Select("SELECT ust_ok FROM auftrag WHERE id='$id' LIMIT 1");
|
||||||
@ -5717,7 +5721,7 @@ Die Gesamtsumme stimmt nicht mehr mit ursprünglich festgelegten Betrag '.
|
|||||||
|
|
||||||
$this->app->erp->ANABREGSNeuberechnen($rechnung,"rechnung");
|
$this->app->erp->ANABREGSNeuberechnen($rechnung,"rechnung");
|
||||||
$this->app->erp->rechnung_zahlstatus_berechnen($id);
|
$this->app->erp->rechnung_zahlstatus_berechnen($id);
|
||||||
$this->app->erp->PDFArchivieren("rechnung",$rechnung);
|
$this->app->erp->RechnungArchivieren($rechnung);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// auftrag_position geliefert_menge und geliefert anpassen
|
// auftrag_position geliefert_menge und geliefert anpassen
|
||||||
@ -6129,15 +6133,12 @@ Die Gesamtsumme stimmt nicht mehr mit ursprünglich festgelegten Betrag '.
|
|||||||
}
|
}
|
||||||
unlink($tmpfile);
|
unlink($tmpfile);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Send the invoice as last step
|
// Send the invoice as last step
|
||||||
if($autodruckrechnungstufe1mail && $rechnung > 0)
|
if($autodruckrechnungstufe1mail && $rechnung > 0)
|
||||||
{
|
{
|
||||||
$this->app->erp->Rechnungsmail($rechnung);
|
$this->app->erp->Rechnungsmail($rechnung);
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->app->erp->RunHook('auftrag_versand_ende', 1, $id);
|
$this->app->erp->RunHook('auftrag_versand_ende', 1, $id);
|
||||||
|
|
||||||
// wenn per URL aufgerufen
|
// wenn per URL aufgerufen
|
||||||
if($internmodus!='1')
|
if($internmodus!='1')
|
||||||
{
|
{
|
||||||
|
@ -876,22 +876,19 @@ class Lieferschein extends GenLieferschein
|
|||||||
$this->app->Tpl->Set('AUFTRAG','-');
|
$this->app->Tpl->Set('AUFTRAG','-');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$link_zur_rechnung = "CONCAT('<a href=\"index.php?module=rechnung&action=edit&id=',r.id,'\" target=\"_blank\"',if(r.status='storniert',' title=\"Rechnung storniert\"><s>','>'),if(r.belegnr='0' OR r.belegnr='','ENTWURF',r.belegnr),if(r.status='storniert','</s>',''),'</a> ',".$this->app->YUI->GetRechnungFileDownloadLinkIconSQL().",' <a href=\"index.php?module=rechnung&action=edit&id=',r.id,'\" target=\"_blank\"><img src=\"./themes/new/images/edit.svg\" title=\"Rechnung bearbeiten\" border=\"0\"></a>')";
|
||||||
|
|
||||||
if($auftragArr[0]['auftragid'] > 0){
|
if($auftragArr[0]['auftragid'] > 0){
|
||||||
$rechnung = $this->app->DB->SelectArr(
|
$rechnung = $this->app->DB->SelectArr(
|
||||||
($auftragArr[0]['auftragid']?
|
($auftragArr[0]['auftragid']?
|
||||||
"SELECT
|
"SELECT
|
||||||
CONCAT('<a href=\"index.php?module=rechnung&action=edit&id=',r.id,'\" target=\"_blank\">',if(r.belegnr='0' OR r.belegnr='','ENTWURF',r.belegnr),' <a href=\"index.php?module=rechnung&action=pdf&id=',r.id,'\"><img src=\"./themes/new/images/pdf.svg\" title=\"Rechnung PDF\" border=\"0\"></a>
|
".$link_zur_rechnung." as rechnung FROM rechnung r WHERE r.auftragid='".$auftragArr[0]['auftragid']."' AND r.auftragid <> '0'
|
||||||
<a href=\"index.php?module=rechnung&action=edit&id=',r.id,'\" target=\"_blank\"><img src=\"./themes/new/images/edit.svg\" title=\"Rechnung bearbeiten\" border=\"0\"></a>') as rechnung
|
|
||||||
FROM rechnung r WHERE r.auftragid='".$auftragArr[0]['auftragid']."' AND r.auftragid <> '0'
|
|
||||||
union
|
union
|
||||||
SELECT
|
SELECT
|
||||||
CONCAT('<a href=\"index.php?module=rechnung&action=edit&id=',r.id,'\" target=\"_blank\">',if(r.belegnr='0' OR r.belegnr='','ENTWURF',r.belegnr),' <a href=\"index.php?module=rechnung&action=pdf&id=',r.id,'\"><img src=\"./themes/new/images/pdf.svg\" title=\"Rechnung PDF\" border=\"0\"></a>
|
".$link_zur_rechnung." as rechnung FROM rechnung r INNER JOIN sammelrechnung_position s ON r.id = s.rechnung INNER JOIN auftrag_position p ON s.auftrag_position_id = p.id WHERE p.auftrag='".$auftragArr[0]['auftragid']."'
|
||||||
<a href=\"index.php?module=rechnung&action=edit&id=',r.id,'\" target=\"_blank\"><img src=\"./themes/new/images/edit.svg\" title=\"Rechnung bearbeiten\" border=\"0\"></a>') as rechnung
|
|
||||||
FROM rechnung r INNER JOIN sammelrechnung_position s ON r.id = s.rechnung INNER JOIN auftrag_position p ON s.auftrag_position_id = p.id WHERE p.auftrag='".$auftragArr[0]['auftragid']."'
|
|
||||||
union ":"")."
|
union ":"")."
|
||||||
SELECT
|
SELECT
|
||||||
CONCAT('<a href=\"index.php?module=rechnung&action=edit&id=',r.id,'\" target=\"_blank\">',if(r.belegnr='0' OR r.belegnr='','ENTWURF',r.belegnr),' <a href=\"index.php?module=rechnung&action=pdf&id=',r.id,'\"><img src=\"./themes/new/images/pdf.svg\" title=\"Rechnung PDF\" border=\"0\"></a>
|
".$link_zur_rechnung." as rechnung
|
||||||
<a href=\"index.php?module=rechnung&action=edit&id=',r.id,'\" target=\"_blank\"><img src=\"./themes/new/images/edit.svg\" title=\"Rechnung bearbeiten\" border=\"0\"></a>') as rechnung
|
|
||||||
FROM rechnung r INNER JOIN sammelrechnung_position s ON r.id = s.rechnung
|
FROM rechnung r INNER JOIN sammelrechnung_position s ON r.id = s.rechnung
|
||||||
INNER JOIN lieferschein_position lp ON lp.id = s.lieferschein_position_id
|
INNER JOIN lieferschein_position lp ON lp.id = s.lieferschein_position_id
|
||||||
WHERE lp.lieferschein='$id'
|
WHERE lp.lieferschein='$id'
|
||||||
@ -903,14 +900,11 @@ class Lieferschein extends GenLieferschein
|
|||||||
if($auftragArr[0]['rechnungid'] > 0){
|
if($auftragArr[0]['rechnungid'] > 0){
|
||||||
|
|
||||||
$rechnung = $this->app->DB->SelectArr("SELECT
|
$rechnung = $this->app->DB->SelectArr("SELECT
|
||||||
CONCAT('<a href=\"index.php?module=rechnung&action=edit&id=',r.id,'\" target=\"_blank\">',if(r.belegnr='0' OR r.belegnr='','ENTWURF',r.belegnr),' <a href=\"index.php?module=rechnung&action=pdf&id=',r.id,'\"><img src=\"./themes/new/images/pdf.svg\" title=\"Rechnung PDF\" border=\"0\"></a>
|
".$link_zur_rechnung." as rechnung
|
||||||
<a href=\"index.php?module=rechnung&action=edit&id=',r.id,'\" target=\"_blank\"><img src=\"./themes/new/images/edit.svg\" title=\"Rechnung bearbeiten\" border=\"0\"></a>') as rechnung
|
|
||||||
FROM rechnung r WHERE r.id='".$auftragArr[0]['rechnungid']."' AND r.id <> '0'
|
FROM rechnung r WHERE r.id='".$auftragArr[0]['rechnungid']."' AND r.id <> '0'
|
||||||
union
|
union
|
||||||
|
|
||||||
SELECT
|
SELECT
|
||||||
CONCAT('<a href=\"index.php?module=rechnung&action=edit&id=',r.id,'\" target=\"_blank\">',if(r.belegnr='0' OR r.belegnr='','ENTWURF',r.belegnr),' <a href=\"index.php?module=rechnung&action=pdf&id=',r.id,'\"><img src=\"./themes/new/images/pdf.svg\" title=\"Rechnung PDF\" border=\"0\"></a>
|
".$link_zur_rechnung." as rechnung
|
||||||
<a href=\"index.php?module=rechnung&action=edit&id=',r.id,'\" target=\"_blank\"><img src=\"./themes/new/images/edit.svg\" title=\"Rechnung bearbeiten\" border=\"0\"></a>') as rechnung
|
|
||||||
FROM rechnung r INNER JOIN sammelrechnung_position s ON r.id = s.rechnung
|
FROM rechnung r INNER JOIN sammelrechnung_position s ON r.id = s.rechnung
|
||||||
INNER JOIN lieferschein_position lp ON lp.id = s.lieferschein_position_id
|
INNER JOIN lieferschein_position lp ON lp.id = s.lieferschein_position_id
|
||||||
WHERE lp.lieferschein='$id'
|
WHERE lp.lieferschein='$id'
|
||||||
|
@ -76,6 +76,7 @@ class Rechnung extends GenRechnung
|
|||||||
$this->app->ActionHandler("dateien","RechnungDateien");
|
$this->app->ActionHandler("dateien","RechnungDateien");
|
||||||
$this->app->ActionHandler("pdffromarchive","RechnungPDFfromArchiv");
|
$this->app->ActionHandler("pdffromarchive","RechnungPDFfromArchiv");
|
||||||
$this->app->ActionHandler("archivierepdf","RechnungArchivierePDF");
|
$this->app->ActionHandler("archivierepdf","RechnungArchivierePDF");
|
||||||
|
$this->app->ActionHandler("archivierexml","RechnungArchiviereXML");
|
||||||
|
|
||||||
$this->app->ActionHandler("summe","RechnungSumme"); // nur fuer rechte
|
$this->app->ActionHandler("summe","RechnungSumme"); // nur fuer rechte
|
||||||
$this->app->ActionHandler("belegnredit","belegnredit"); // nur fuer rechte
|
$this->app->ActionHandler("belegnredit","belegnredit"); // nur fuer rechte
|
||||||
@ -201,33 +202,61 @@ class Rechnung extends GenRechnung
|
|||||||
$this->app->ExitXentral();
|
$this->app->ExitXentral();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function RechnungArchiviereXML($id = null) {
|
||||||
|
if ($id === null) {
|
||||||
|
$id = (int)$this->app->Secure->GetGET('id');
|
||||||
|
$redirect = true;
|
||||||
|
}
|
||||||
|
$result = $this->RechnungSmarty(id: $id, json: false, returnvalue: true);
|
||||||
|
|
||||||
|
if ($result['success']) {
|
||||||
|
|
||||||
|
// Check for old files
|
||||||
|
$existing = false;
|
||||||
|
$existing_ids = $this->app->erp->GetDateiSubjektObjekt('rechnung','rechnung',$id);
|
||||||
|
foreach ($existing_ids as $existing_id) {
|
||||||
|
if($this->app->erp->GetDateiEndung($existing_id) == 'xml') {
|
||||||
|
$existing = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($existing) {
|
||||||
|
$this->app->erp->AddDateiVersion(
|
||||||
|
id: $existing_id,
|
||||||
|
ersteller: $this->app->User->GetName(),
|
||||||
|
dateiname: $result['filename'].'.xml',
|
||||||
|
bemerkung: '',
|
||||||
|
datei: $result['xml'],
|
||||||
|
path: ""
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
$this->app->erp->CreateDateiWithStichwort(
|
||||||
|
name: $result['filename'].'.xml',
|
||||||
|
titel: $result['title'],
|
||||||
|
beschreibung: '',
|
||||||
|
nummer: '',
|
||||||
|
datei: $result['xml'],
|
||||||
|
ersteller: $this->app->User->GetName(),
|
||||||
|
subjekt: 'rechnung',
|
||||||
|
objekt: 'rechnung',
|
||||||
|
parameter: $id
|
||||||
|
);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
throw new exception("XML Rechnung fehlgeschlagen!");
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->app->DB->Update("UPDATE rechnung SET schreibschutz='1', zuarchivieren = '0' WHERE id='$id'");
|
||||||
|
if ($redirect) {
|
||||||
|
$this->app->Location->execute('index.php?module=rechnung&action=edit&id='.$id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function RechnungArchivierePDF()
|
function RechnungArchivierePDF()
|
||||||
{
|
{
|
||||||
$id = (int)$this->app->Secure->GetGET('id');
|
$id = (int)$this->app->Secure->GetGET('id');
|
||||||
$projekt = $this->app->DB->Select("SELECT projekt FROM rechnung WHERE id = '$id' LIMIT 1");
|
$this->app->erp->PDFArchivieren('rechnung', $id, true);
|
||||||
$this->app->erp->BriefpapierHintergrunddisable = !$this->app->erp->BriefpapierHintergrunddisable;
|
|
||||||
if(class_exists('RechnungPDFCustom'))
|
|
||||||
{
|
|
||||||
$Brief = new RechnungPDFCustom($this->app,$projekt);
|
|
||||||
}else{
|
|
||||||
$Brief = new RechnungPDF($this->app,$projekt);
|
|
||||||
}
|
|
||||||
$Brief->GetRechnung($id);
|
|
||||||
$tmpfile = $Brief->displayTMP();
|
|
||||||
$Brief->ArchiviereDocument(1);
|
|
||||||
unlink($tmpfile);
|
|
||||||
$this->app->erp->BriefpapierHintergrunddisable = !$this->app->erp->BriefpapierHintergrunddisable;
|
|
||||||
if(class_exists('RechnungPDFCustom'))
|
|
||||||
{
|
|
||||||
$Brief = new RechnungPDFCustom($this->app,$projekt);
|
|
||||||
}else{
|
|
||||||
$Brief = new RechnungPDF($this->app,$projekt);
|
|
||||||
}
|
|
||||||
$Brief->GetRechnung($id);
|
|
||||||
$tmpfile = $Brief->displayTMP();
|
|
||||||
$Brief->ArchiviereDocument(1);
|
|
||||||
|
|
||||||
$this->app->DB->Update("UPDATE rechnung SET schreibschutz='1' WHERE id='$id'");
|
$this->app->DB->Update("UPDATE rechnung SET schreibschutz='1' WHERE id='$id'");
|
||||||
$this->app->Location->execute('index.php?module=rechnung&action=edit&id='.$id);
|
$this->app->Location->execute('index.php?module=rechnung&action=edit&id='.$id);
|
||||||
}
|
}
|
||||||
@ -548,15 +577,7 @@ class Rechnung extends GenRechnung
|
|||||||
</select>
|
</select>
|
||||||
";
|
";
|
||||||
|
|
||||||
if (!empty($rechnungarr['belegnr'])) {
|
$downloadicon = $this->app->YUI->GetRechnungFileDownloadLinkIcon($id);
|
||||||
if ($rechnungarr['xmlrechnung']) {
|
|
||||||
$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 = '';
|
|
||||||
}
|
|
||||||
|
|
||||||
$menu .= $downloadicon;
|
$menu .= $downloadicon;
|
||||||
|
|
||||||
@ -1234,7 +1255,7 @@ class Rechnung extends GenRechnung
|
|||||||
$doppel = $this->app->Secure->GetGET('doppel');
|
$doppel = $this->app->Secure->GetGET('doppel');
|
||||||
$invoiceArr = $this->app->DB->SelectRow("SELECT schreibschutz, projekt, zuarchivieren FROM rechnung WHERE id='$id' LIMIT 1");
|
$invoiceArr = $this->app->DB->SelectRow("SELECT schreibschutz, projekt, zuarchivieren FROM rechnung WHERE id='$id' LIMIT 1");
|
||||||
if(!empty($invoiceArr['schreibschutz']) && !empty($invoiceArr['zuarchivieren'])) {
|
if(!empty($invoiceArr['schreibschutz']) && !empty($invoiceArr['zuarchivieren'])) {
|
||||||
$this->app->erp->PDFArchivieren('rechnung', $id, true);
|
$this->app->erp->RechnungArchivieren($id);
|
||||||
}
|
}
|
||||||
$projekt = $invoiceArr['projekt'];
|
$projekt = $invoiceArr['projekt'];
|
||||||
$schreibschutz = $invoiceArr['schreibschutz'];
|
$schreibschutz = $invoiceArr['schreibschutz'];
|
||||||
@ -1259,7 +1280,7 @@ class Rechnung extends GenRechnung
|
|||||||
|
|
||||||
// Print PHP array for SmartyXML
|
// Print PHP array for SmartyXML
|
||||||
function RechnungJSON() {
|
function RechnungJSON() {
|
||||||
$this->RechnungSmarty(true);
|
$this->RechnungSmarty(json: true);
|
||||||
}
|
}
|
||||||
|
|
||||||
function remove_html_entities_from_array(&$array) {
|
function remove_html_entities_from_array(&$array) {
|
||||||
@ -1284,16 +1305,19 @@ class Rechnung extends GenRechnung
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function RechnungSmarty($json = false) {
|
function RechnungSmarty($id = null, $json = false, $returnvalue = false) {
|
||||||
$id = $this->app->Secure->GetGET('id');
|
if ($id === null) {
|
||||||
|
$id = $this->app->Secure->GetGET('id');
|
||||||
|
}
|
||||||
$result = Array();
|
$result = Array();
|
||||||
|
$success = true;
|
||||||
|
|
||||||
$result['rechnungssteller']['name'] = $this->app->erp->Firmendaten('name');
|
$result['rechnungssteller']['name'] = $this->app->erp->Firmendaten('name');
|
||||||
$result['rechnungssteller']['strasse'] = $this->app->erp->Firmendaten('strasse');
|
$result['rechnungssteller']['strasse'] = $this->app->erp->Firmendaten('strasse');
|
||||||
$result['rechnungssteller']['ort'] = $this->app->erp->Firmendaten('ort');
|
$result['rechnungssteller']['ort'] = $this->app->erp->Firmendaten('ort');
|
||||||
$result['rechnungssteller']['plz'] = $this->app->erp->Firmendaten('plz');
|
$result['rechnungssteller']['plz'] = $this->app->erp->Firmendaten('plz');
|
||||||
$result['rechnungssteller']['land'] = $this->app->erp->Firmendaten('land');
|
$result['rechnungssteller']['land'] = $this->app->erp->Firmendaten('land');
|
||||||
$result['rechnungssteller']['steuernummer'] = $this->app->erp->Firmendaten('steuernummer');
|
$result['rechnungssteller']['steuernummer'] = $this->app->erp->Firmendaten('steuernummer');
|
||||||
|
|
||||||
$rechnung = $this->app->DB->SelectRow("
|
$rechnung = $this->app->DB->SelectRow("
|
||||||
SELECT * FROM rechnung WHERE id = $id LIMIT 1
|
SELECT * FROM rechnung WHERE id = $id LIMIT 1
|
||||||
@ -1314,13 +1338,13 @@ class Rechnung extends GenRechnung
|
|||||||
throw new exception("Rechnung enthält keine 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);
|
||||||
$positionen[$key]['steuersatz'] = $steuersatz;
|
$positionen[$key]['steuersatz'] = $steuersatz;
|
||||||
$positionen[$key]['steuertext'] = $steuertext;
|
$positionen[$key]['steuertext'] = $steuertext;
|
||||||
$positionen[$key]['erloese'] = $erloes;
|
$positionen[$key]['erloese'] = $erloes;
|
||||||
|
|
||||||
$steuern[$steuersatz]['umsatz_netto'] += $position['umsatz_netto_gesamt'];
|
$steuern[$steuersatz]['umsatz_netto'] += $position['umsatz_netto_gesamt'];
|
||||||
$steuern[$steuersatz]['umsatz_brutto'] += $position['umsatz_brutto_gesamt'];
|
$steuern[$steuersatz]['umsatz_brutto'] += $position['umsatz_brutto_gesamt'];
|
||||||
$steuern[$steuersatz]['prozent'] = $steuersatz;
|
$steuern[$steuersatz]['prozent'] = $steuersatz;
|
||||||
@ -1335,31 +1359,43 @@ class Rechnung extends GenRechnung
|
|||||||
$this->remove_CDATA_fragments_from_array($result);
|
$this->remove_CDATA_fragments_from_array($result);
|
||||||
|
|
||||||
if ($json) {
|
if ($json) {
|
||||||
header('Content-type:text/plain');
|
$headers[] = 'Content-type:text/plain';
|
||||||
header('Content-Disposition: attachment;filename='.$filename.'.json');
|
$headers[] = 'Content-Disposition: attachment;filename='.$filename.'.json';
|
||||||
echo(json_encode($result,JSON_PRETTY_PRINT));
|
$output = json_encode($result,JSON_PRETTY_PRINT);
|
||||||
} else {
|
} else {
|
||||||
|
$headers[] = 'Content-type:text/xml';
|
||||||
|
$headers[] = 'Content-Disposition: attachment;filename='.$filename.'.xml';
|
||||||
$template_id = $this->GetXMLSmartyTemplate($id);
|
$template_id = $this->GetXMLSmartyTemplate($id);
|
||||||
if(empty($template_id)) {
|
if(empty($template_id)) {
|
||||||
header('Content-type:text/xml');
|
$output = '<?xml version="1.0" encoding="utf-8"?>
|
||||||
header('Content-Disposition: attachment;filename='.$filename.'.xml');
|
|
||||||
echo('<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<note>
|
<note>
|
||||||
<body>Kein Smarty Template an der Addresse hinterlegt!</body>
|
<body>Kein Smarty Template an der Addresse hinterlegt!</body>
|
||||||
</note>');
|
</note>';
|
||||||
|
$success = false;
|
||||||
} else {
|
} else {
|
||||||
$template = $this->app->DB->Select("SELECT template from smarty_templates WHERE id = '$template_id' LIMIT 1");
|
$template = $this->app->DB->Select("SELECT template from smarty_templates WHERE id = '$template_id' LIMIT 1");
|
||||||
$smarty = new Smarty;
|
$smarty = new Smarty;
|
||||||
$directory = $this->app->erp->GetTMP().'/smarty/templates';
|
$directory = $this->app->erp->GetTMP().'/smarty/templates';
|
||||||
$smarty->setCompileDir($directory);
|
$smarty->setCompileDir($directory);
|
||||||
$smarty->assign('rechnung', $result);
|
$smarty->assign('rechnung', $output);
|
||||||
$html = $smarty->fetch('string:'.$template);
|
$output = $smarty->fetch('string:'.$template);
|
||||||
header('Content-type:application/xml');
|
}
|
||||||
header('Content-Disposition: attachment;filename='.$filename.'.xml');
|
|
||||||
echo($html);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
$this->app->ExitXentral();
|
|
||||||
|
if ($returnvalue) {
|
||||||
|
return(Array(
|
||||||
|
'success' => $success,
|
||||||
|
'title' => 'Rechnung '.$result['kopf']['belegnr'],
|
||||||
|
'filename' => $filename,
|
||||||
|
'xml' => $output
|
||||||
|
));
|
||||||
|
} else {
|
||||||
|
foreach ($headers as $header) {
|
||||||
|
header($header);
|
||||||
|
}
|
||||||
|
echo($output);
|
||||||
|
$this->app->ExitXentral();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function RechnungSuche()
|
function RechnungSuche()
|
||||||
@ -1463,7 +1499,7 @@ class Rechnung extends GenRechnung
|
|||||||
public function CopyRechnungPosition()
|
public function CopyRechnungPosition()
|
||||||
{
|
{
|
||||||
$this->app->YUI->SortListEvent('copy','rechnung_position','rechnung');
|
$this->app->YUI->SortListEvent('copy','rechnung_position','rechnung');
|
||||||
$this->RechnungPositionen();
|
$this->RechnungPositionen();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function DelRechnungPosition()
|
public function DelRechnungPosition()
|
||||||
@ -1732,38 +1768,6 @@ class Rechnung extends GenRechnung
|
|||||||
$this->app->erp->CheckBearbeiter($id,'rechnung');
|
$this->app->erp->CheckBearbeiter($id,'rechnung');
|
||||||
$this->app->erp->CheckBuchhaltung($id,'rechnung');
|
$this->app->erp->CheckBuchhaltung($id,'rechnung');
|
||||||
|
|
||||||
$invoiceArr = $this->app->DB->SelectRow(
|
|
||||||
sprintf(
|
|
||||||
'SELECT zahlungsweise,zahlungszieltage,dta_datei,status,zahlungsstatus,schreibschutz FROM rechnung WHERE id= %d LIMIT 1',
|
|
||||||
(int)$id
|
|
||||||
)
|
|
||||||
);
|
|
||||||
$zahlungsweise= $invoiceArr['zahlungsweise'];
|
|
||||||
$zahlungszieltage= $invoiceArr['zahlungszieltage'];
|
|
||||||
$zahlungsstatus= $invoiceArr['zahlungsstatus'];
|
|
||||||
if($zahlungsweise==='rechnung' && $zahlungszieltage<1)
|
|
||||||
{
|
|
||||||
$this->app->Tpl->Add('MESSAGE',"<div class=\"info\">Hinweis: Fälligkeit auf \"sofort\", da Zahlungsziel in Tagen auf 0 Tage gesetzt ist!</div>");
|
|
||||||
}
|
|
||||||
|
|
||||||
$status= $invoiceArr['status'];
|
|
||||||
$schreibschutz= $invoiceArr['schreibschutz'];
|
|
||||||
if($status !== 'angelegt' && $status !== 'angelegta' && $status !== 'a')
|
|
||||||
{
|
|
||||||
$Brief = new Briefpapier($this->app);
|
|
||||||
if($Brief->zuArchivieren($id, "rechnung"))
|
|
||||||
{
|
|
||||||
$this->app->Tpl->Add('MESSAGE',"<div class=\"warning\">Die Rechnung ist noch nicht archiviert! Bitte versenden oder manuell archivieren. <input type=\"button\" onclick=\"if(!confirm('Soll das Dokument archiviert werden?')) return false;else window.location.href='index.php?module=rechnung&action=archivierepdf&id=$id';\" value=\"Manuell archivieren\" /> <input type=\"button\" value=\"Dokument versenden\" onclick=\"DokumentAbschicken('rechnung',$id)\"></div>");
|
|
||||||
}elseif(!$this->app->DB->Select("SELECT versendet FROM rechnung WHERE id = '$id' LIMIT 1"))
|
|
||||||
{
|
|
||||||
$this->app->Tpl->Add('MESSAGE',"<div class=\"warning\">Die Rechnung wurde noch nicht versendet! <input type=\"button\" value=\"Dokument versenden\" onclick=\"DokumentAbschicken('rechnung',$id)\"></div>");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$this->app->erp->RechnungNeuberechnen($id); //BENE
|
|
||||||
|
|
||||||
$this->RechnungMiniDetail('MINIDETAIL',false); //BENE
|
|
||||||
$this->app->Tpl->Set('ICONMENU',$this->RechnungIconMenu($id));
|
|
||||||
$this->app->Tpl->Set('ICONMENU2',$this->RechnungIconMenu($id,2));
|
|
||||||
if($id > 0){
|
if($id > 0){
|
||||||
$rechnungarr = $this->app->DB->SelectRow("SELECT * FROM rechnung WHERE id='$id' LIMIT 1");
|
$rechnungarr = $this->app->DB->SelectRow("SELECT * FROM rechnung WHERE id='$id' LIMIT 1");
|
||||||
}
|
}
|
||||||
@ -1775,18 +1779,46 @@ class Rechnung extends GenRechnung
|
|||||||
$soll = 0;
|
$soll = 0;
|
||||||
$projekt = 0;
|
$projekt = 0;
|
||||||
if(!empty($rechnungarr)){
|
if(!empty($rechnungarr)){
|
||||||
$nummer = $rechnungarr['belegnr'];//$this->app->DB->Select("SELECT belegnr FROM rechnung WHERE id='$id' LIMIT 1");
|
$nummer = $rechnungarr['belegnr'];//$this->app->DB->Select("SELECT belegnr FROM rechnung WHERE id='$id' LIMIT 1");
|
||||||
$kundennummer = $rechnungarr['kundennummer'];//$this->app->DB->Select("SELECT kundennummer FROM rechnung WHERE id='$id' LIMIT 1");
|
$kundennummer = $rechnungarr['kundennummer'];//$this->app->DB->Select("SELECT kundennummer FROM rechnung WHERE id='$id' LIMIT 1");
|
||||||
$adresse = $rechnungarr['adresse'];//$this->app->DB->Select("SELECT adresse FROM rechnung WHERE id='$id' LIMIT 1");
|
$adresse = $rechnungarr['adresse'];//$this->app->DB->Select("SELECT adresse FROM rechnung WHERE id='$id' LIMIT 1");
|
||||||
$punkte = $rechnungarr['punkte'];//$this->app->DB->Select("SELECT punkte FROM rechnung WHERE id='$id' LIMIT 1");
|
$punkte = $rechnungarr['punkte'];//$this->app->DB->Select("SELECT punkte FROM rechnung WHERE id='$id' LIMIT 1");
|
||||||
$bonuspunkte = $rechnungarr['bonuspunkte'];//$this->app->DB->Select("SELECT bonuspunkte FROM rechnung WHERE id='$id' LIMIT 1");
|
$bonuspunkte = $rechnungarr['bonuspunkte'];//$this->app->DB->Select("SELECT bonuspunkte FROM rechnung WHERE id='$id' LIMIT 1");
|
||||||
$soll = $rechnungarr['soll'];//$this->app->DB->Select("SELECT soll FROM rechnung WHERE id='$id' LIMIT 1");
|
$soll = $rechnungarr['soll'];//$this->app->DB->Select("SELECT soll FROM rechnung WHERE id='$id' LIMIT 1");
|
||||||
$projekt = $rechnungarr['projekt'];
|
$projekt = $rechnungarr['projekt'];
|
||||||
|
$skontosoll = $this->app->DB->Select("SELECT TRUNCATE(soll*(1-(zahlungszielskonto/100)),2) as skontosoll FROM rechnung where id = '".$id."' LIMIT 1");
|
||||||
$skontosoll = $this->app->DB->Select("SELECT TRUNCATE(soll*(1-(zahlungszielskonto/100)),2) as skontosoll FROM rechnung where id = '".$id."' LIMIT 1");
|
$xmlrechnung = $rechnungarr['xmlrechnung'];
|
||||||
|
$zahlungsweise= $rechnungarr['zahlungsweise'];
|
||||||
$xmlrechnung = $rechnungarr['xmlrechnung'];
|
$zahlungszieltage= $rechnungarr['zahlungszieltage'];
|
||||||
|
$zahlungsstatus= $rechnungarr['zahlungsstatus'];
|
||||||
|
if($zahlungsweise==='rechnung' && $zahlungszieltage<1)
|
||||||
|
{
|
||||||
|
$this->app->Tpl->Add('MESSAGE',"<div class=\"info\">Hinweis: Fälligkeit auf \"sofort\", da Zahlungsziel in Tagen auf 0 Tage gesetzt ist!</div>");
|
||||||
|
}
|
||||||
|
$status= $rechnungarr['status'];
|
||||||
|
$schreibschutz= $rechnungarr['schreibschutz'];
|
||||||
}
|
}
|
||||||
|
if($status !== 'angelegt' && $status !== 'angelegta' && $status !== 'a')
|
||||||
|
{
|
||||||
|
$Brief = new Briefpapier($this->app);
|
||||||
|
if($Brief->zuArchivieren($id, "rechnung"))
|
||||||
|
{
|
||||||
|
if ($xmlrechnung) {
|
||||||
|
$archiviere = "archivierexml";
|
||||||
|
} else {
|
||||||
|
$archiviere = "archivierepdf";
|
||||||
|
}
|
||||||
|
$this->app->Tpl->Add('MESSAGE',"<div class=\"warning\">Die Rechnung ist noch nicht archiviert! Bitte versenden oder manuell archivieren. <input type=\"button\" onclick=\"if(!confirm('Soll das Dokument archiviert werden?')) return false;else window.location.href='index.php?module=rechnung&action=$archiviere&id=$id';\" value=\"Manuell archivieren\" /> <input type=\"button\" value=\"Dokument versenden\" onclick=\"DokumentAbschicken('rechnung',$id)\"></div>");
|
||||||
|
}elseif(!$this->app->DB->Select("SELECT versendet FROM rechnung WHERE id = '$id' LIMIT 1"))
|
||||||
|
{
|
||||||
|
$this->app->Tpl->Add('MESSAGE',"<div class=\"warning\">Die Rechnung wurde noch nicht versendet! <input type=\"button\" value=\"Dokument versenden\" onclick=\"DokumentAbschicken('rechnung',$id)\"></div>");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$this->app->erp->RechnungNeuberechnen($id); //BENE
|
||||||
|
|
||||||
|
$this->RechnungMiniDetail('MINIDETAIL',false); //BENE
|
||||||
|
$this->app->Tpl->Set('ICONMENU',$this->RechnungIconMenu($id));
|
||||||
|
$this->app->Tpl->Set('ICONMENU2',$this->RechnungIconMenu($id,2));
|
||||||
|
|
||||||
$this->app->Tpl->Set('PUNKTE',"<input type=\"text\" name=\"punkte\" value=\"$punkte\" size=\"10\" readonly>");
|
$this->app->Tpl->Set('PUNKTE',"<input type=\"text\" name=\"punkte\" value=\"$punkte\" size=\"10\" readonly>");
|
||||||
$this->app->Tpl->Set('BONUSPUNKTE',"<input type=\"text\" name=\"punkte\" value=\"$bonuspunkte\" size=\"10\" readonly>");
|
$this->app->Tpl->Set('BONUSPUNKTE',"<input type=\"text\" name=\"punkte\" value=\"$bonuspunkte\" size=\"10\" readonly>");
|
||||||
@ -1802,7 +1834,7 @@ class Rechnung extends GenRechnung
|
|||||||
|
|
||||||
if($nummer!='') {
|
if($nummer!='') {
|
||||||
|
|
||||||
$this->app->Tpl->Set('NUMMER',$nummer);
|
$this->app->Tpl->Set('NUMMER',$nummer);
|
||||||
|
|
||||||
if (($schreibschutz!='1') && $this->app->erp->RechteVorhanden('rechnung','belegnredit')){
|
if (($schreibschutz!='1') && $this->app->erp->RechteVorhanden('rechnung','belegnredit')){
|
||||||
$this->app->Tpl->Set('BELEGNRHIDDEN','hidden');
|
$this->app->Tpl->Set('BELEGNRHIDDEN','hidden');
|
||||||
@ -1911,7 +1943,7 @@ class Rechnung extends GenRechnung
|
|||||||
|
|
||||||
$this->app->erp->RemoveReadonly('ist');
|
$this->app->erp->RemoveReadonly('ist');
|
||||||
|
|
||||||
if($this->app->erp->Firmendaten('mahnwesenmitkontoabgleich')!='1' || $this->app->DB->Select("SELECT mahnwesenfestsetzen FROM rechnung WHERE id='$id' LIMIT 1")==1)
|
if($this->app->erp->Firmendaten('mahnwesenmitkontoabgleich')!='1' || $this->app->DB->Select("SELECT mahnwesenfestsetzen FROM rechnung WHERE id='$id' LIMIT 1")==1)
|
||||||
$this->app->erp->RemoveReadonly('ist');*/
|
$this->app->erp->RemoveReadonly('ist');*/
|
||||||
|
|
||||||
//$auftrag= $this->app->DB->Select("SELECT auftrag FROM rechnung WHERE id='$id' LIMIT 1");
|
//$auftrag= $this->app->DB->Select("SELECT auftrag FROM rechnung WHERE id='$id' LIMIT 1");
|
||||||
@ -1994,7 +2026,7 @@ class Rechnung extends GenRechnung
|
|||||||
$this->app->Tpl->Set('SCHNELLEINGABE_TOOLTIP_HIDDEN', 'hidden');
|
$this->app->Tpl->Set('SCHNELLEINGABE_TOOLTIP_HIDDEN', 'hidden');
|
||||||
}
|
}
|
||||||
|
|
||||||
$saldo = $this->app->erp->GetSaldoDokument($id,'rechnung');
|
$saldo = $this->app->erp->GetSaldoDokument($id,'rechnung');
|
||||||
if (empty($saldo)) {
|
if (empty($saldo)) {
|
||||||
$this->app->Tpl->Set('SCHNELLEINGABE_HIDDEN', 'hidden');
|
$this->app->Tpl->Set('SCHNELLEINGABE_HIDDEN', 'hidden');
|
||||||
$this->app->Tpl->Set('SCHNELLEINGABE_TOOLTIP_HIDDEN', 'hidden');
|
$this->app->Tpl->Set('SCHNELLEINGABE_TOOLTIP_HIDDEN', 'hidden');
|
||||||
@ -2010,7 +2042,7 @@ class Rechnung extends GenRechnung
|
|||||||
|
|
||||||
if (!empty($rechnung_schnelleingabe_konto)) {
|
if (!empty($rechnung_schnelleingabe_konto)) {
|
||||||
$this->app->Tpl->Set('SCHNELLEINGABE_TOOLTIP_HIDDEN', 'hidden');
|
$this->app->Tpl->Set('SCHNELLEINGABE_TOOLTIP_HIDDEN', 'hidden');
|
||||||
if ($speichern!='' && $this->app->erp->RechteVorhanden('rechnung','manuellbezahltmarkiert') && !empty($zahlbetrag)) {
|
if ($speichern!='' && $this->app->erp->RechteVorhanden('rechnung','manuellbezahltmarkiert') && !empty($zahlbetrag)) {
|
||||||
if ($bezahlt_am == '0000-00-00') {
|
if ($bezahlt_am == '0000-00-00') {
|
||||||
$bezahlt_am = date('Y-m-d');
|
$bezahlt_am = date('Y-m-d');
|
||||||
}
|
}
|
||||||
@ -2039,7 +2071,7 @@ class Rechnung extends GenRechnung
|
|||||||
$this->app->DB->Insert($sql);
|
$this->app->DB->Insert($sql);
|
||||||
$kontoauszug = $this->app->DB->GetInsertID();
|
$kontoauszug = $this->app->DB->GetInsertID();
|
||||||
$this->app->erp->fibu_buchungen_buchen("kontoauszuege",$kontoauszug, "rechnung", $id, -$zahlbetrag, 'EUR', $bezahlt_am, "Rechnung ".$nummer." Schnelleingabe");
|
$this->app->erp->fibu_buchungen_buchen("kontoauszuege",$kontoauszug, "rechnung", $id, -$zahlbetrag, 'EUR', $bezahlt_am, "Rechnung ".$nummer." Schnelleingabe");
|
||||||
$this->rechnung_zahlstatus_berechnen($id);
|
$this->rechnung_zahlstatus_berechnen($id);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
$this->app->Tpl->Set('SCHNELLEINGABE_HIDDEN', 'hidden');
|
$this->app->Tpl->Set('SCHNELLEINGABE_HIDDEN', 'hidden');
|
||||||
@ -2157,7 +2189,7 @@ class Rechnung extends GenRechnung
|
|||||||
' überein <input type="submit" name="resetextsoll" value="Festgeschriebene Summe zurücksetzen" /></div></form>'
|
' überein <input type="submit" name="resetextsoll" value="Festgeschriebene Summe zurücksetzen" /></div></form>'
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
parent::RechnungEdit();
|
parent::RechnungEdit();
|
||||||
if($id > 0 && $this->app->DB->Select(
|
if($id > 0 && $this->app->DB->Select(
|
||||||
sprintf(
|
sprintf(
|
||||||
@ -2166,7 +2198,7 @@ class Rechnung extends GenRechnung
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
) {
|
) {
|
||||||
$this->app->erp->PDFArchivieren('rechnung', $id, true);
|
$this->app->erp->RechnungArchivieren($id);
|
||||||
}
|
}
|
||||||
$this->app->erp->MessageHandlerStandardForm();
|
$this->app->erp->MessageHandlerStandardForm();
|
||||||
|
|
||||||
@ -2255,25 +2287,14 @@ class Rechnung extends GenRechnung
|
|||||||
$invoiceId
|
$invoiceId
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
$this->app->erp->PDFArchivieren('rechnung', $invoiceId, true);
|
$this->app->erp->RechnungArchivieren($invoiceId);
|
||||||
if(class_exists('RechnungPDFCustom')) {
|
|
||||||
$Brief = new RechnungPDFCustom($this->app,$projekt);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
$Brief = new RechnungPDF($this->app,$projekt);
|
|
||||||
}
|
|
||||||
$Brief->GetRechnung($invoiceId);
|
|
||||||
$tmpfile = $Brief->displayTMP();
|
|
||||||
$Brief->ArchiviereDocument();
|
|
||||||
@unlink($tmpfile);
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function RechnungList()
|
public function RechnungList()
|
||||||
{
|
{
|
||||||
|
|
||||||
$this->app->DB->Update("UPDATE rechnung SET zahlungsstatus='offen' WHERE zahlungsstatus=''");
|
$this->app->DB->Update("UPDATE rechnung SET zahlungsstatus='offen' WHERE zahlungsstatus=''");
|
||||||
|
|
||||||
if($this->app->Secure->GetPOST('ausfuehren') && $this->app->erp->RechteVorhanden('rechnung', 'edit'))
|
if($this->app->Secure->GetPOST('ausfuehren') && $this->app->erp->RechteVorhanden('rechnung', 'edit'))
|
||||||
{
|
{
|
||||||
@ -2307,17 +2328,20 @@ class Rechnung extends GenRechnung
|
|||||||
implode(', ', $auswahl)
|
implode(', ', $auswahl)
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
foreach($auswahl as $v) {
|
foreach($auswahl as $v) {
|
||||||
if(!$v) {
|
if(!$v) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
$xmlrechnung = $this->app->DB->Select("SELECT xmlrechnung FROM rechnung WHERE id=$v LIMIT 1");
|
||||||
$checkpapier = $this->app->DB->Select(
|
$checkpapier = $this->app->DB->Select(
|
||||||
"SELECT a.rechnung_papier FROM rechnung AS r
|
"SELECT a.rechnung_papier FROM rechnung AS r
|
||||||
LEFT JOIN adresse AS a ON r.adresse=a.id
|
LEFT JOIN adresse AS a ON r.adresse=a.id
|
||||||
WHERE r.id='$v'
|
WHERE r.id='$v'
|
||||||
LIMIT 1"
|
LIMIT 1"
|
||||||
);
|
);
|
||||||
if($checkpapier!=1 &&
|
|
||||||
|
if((($checkpapier !=1) || $erechnung) &&
|
||||||
$this->app->DB->Select(
|
$this->app->DB->Select(
|
||||||
"SELECT r.id
|
"SELECT r.id
|
||||||
FROM rechnung AS r
|
FROM rechnung AS r
|
||||||
@ -2326,11 +2350,11 @@ class Rechnung extends GenRechnung
|
|||||||
LIMIT 1"
|
LIMIT 1"
|
||||||
)
|
)
|
||||||
) {
|
) {
|
||||||
$this->app->erp->PDFArchivieren('rechnung', $v, true);
|
$this->app->erp->RechnungArchivieren($v);
|
||||||
$this->app->erp->Rechnungsmail($v);
|
$this->app->erp->Rechnungsmail($v);
|
||||||
}
|
}
|
||||||
else if($checkpapier && $drucker) {
|
else if($checkpapier && $drucker && !$erechnung) {
|
||||||
$this->app->erp->PDFArchivieren('rechnung', $v, true);
|
$this->app->erp->RechnungArchivieren($v);
|
||||||
$projekt = $this->app->DB->Select(
|
$projekt = $this->app->DB->Select(
|
||||||
"SELECT projekt FROM rechnung WHERE id='$v' LIMIT 1"
|
"SELECT projekt FROM rechnung WHERE id='$v' LIMIT 1"
|
||||||
);
|
);
|
||||||
@ -2384,12 +2408,13 @@ class Rechnung extends GenRechnung
|
|||||||
$reArr = $this->app->DB->SelectRow(
|
$reArr = $this->app->DB->SelectRow(
|
||||||
sprintf(
|
sprintf(
|
||||||
"SELECT projekt,belegnr,status,usereditid,adresse,
|
"SELECT projekt,belegnr,status,usereditid,adresse,
|
||||||
DATE_SUB(NOW(), INTERVAL 30 SECOND) < useredittimestamp AS `open`
|
DATE_SUB(NOW(), INTERVAL 30 SECOND) < useredittimestamp AS `open`,
|
||||||
|
xmlrechnung
|
||||||
FROM rechnung WHERE id=%d LIMIT 1",
|
FROM rechnung WHERE id=%d LIMIT 1",
|
||||||
$v
|
$v
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
if($reArr['belegnr'] === '' || ($reArr['open'] && $reArr['status'] === 'freigegeben')) {
|
if($reArr['belegnr'] === '' || $reArr['xmlrechnung'] || ($reArr['open'] && $reArr['status'] === 'freigegeben')) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if($reArr['status'] === 'freigegeben') {
|
if($reArr['status'] === 'freigegeben') {
|
||||||
@ -2399,7 +2424,7 @@ class Rechnung extends GenRechnung
|
|||||||
$this->app->erp->RechnungProtokoll($v,'Rechnung gedruckt');
|
$this->app->erp->RechnungProtokoll($v,'Rechnung gedruckt');
|
||||||
$this->app->DB->Update("UPDATE rechnung SET schreibschutz=1, versendet = 1 WHERE id = '$v' LIMIT 1");
|
$this->app->DB->Update("UPDATE rechnung SET schreibschutz=1, versendet = 1 WHERE id = '$v' LIMIT 1");
|
||||||
$this->app->DB->Update("UPDATE rechnung SET status='versendet' WHERE id = '$v' AND status!='storniert' LIMIT 1");
|
$this->app->DB->Update("UPDATE rechnung SET status='versendet' WHERE id = '$v' AND status!='storniert' LIMIT 1");
|
||||||
$this->app->erp->PDFArchivieren('rechnung', $v, true);
|
$this->app->erp->RechnungArchivieren($v);
|
||||||
if(class_exists('RechnungPDFCustom')) {
|
if(class_exists('RechnungPDFCustom')) {
|
||||||
$Brief = new RechnungPDFCustom($this->app,$projekt);
|
$Brief = new RechnungPDFCustom($this->app,$projekt);
|
||||||
}
|
}
|
||||||
@ -2419,6 +2444,10 @@ class Rechnung extends GenRechnung
|
|||||||
case 'pdf':
|
case 'pdf':
|
||||||
$tmpfile = [];
|
$tmpfile = [];
|
||||||
foreach($auswahl as $v) {
|
foreach($auswahl as $v) {
|
||||||
|
$xmlrechnung = $this->app->DB->Select("SELECT xmlrechnung FROM rechnung WHERE id=$v LIMIT 1");
|
||||||
|
if ($xmlrechnung) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
$projekt = $this->app->DB->Select("SELECT projekt FROM rechnung WHERE id=$v LIMIT 1");
|
$projekt = $this->app->DB->Select("SELECT projekt FROM rechnung WHERE id=$v LIMIT 1");
|
||||||
if(class_exists('RechnungPDFCustom')) {
|
if(class_exists('RechnungPDFCustom')) {
|
||||||
$Brief = new RechnungPDFCustom($this->app,$projekt);
|
$Brief = new RechnungPDFCustom($this->app,$projekt);
|
||||||
@ -2621,7 +2650,7 @@ class Rechnung extends GenRechnung
|
|||||||
$zahlungszieltageskonto = 0;
|
$zahlungszieltageskonto = 0;
|
||||||
$zahlungszielskonto = 0;
|
$zahlungszielskonto = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->app->DB->Insert("INSERT INTO rechnung (
|
$this->app->DB->Insert("INSERT INTO rechnung (
|
||||||
id,
|
id,
|
||||||
datum,
|
datum,
|
||||||
@ -2640,8 +2669,7 @@ class Rechnung extends GenRechnung
|
|||||||
ohne_briefpapier,
|
ohne_briefpapier,
|
||||||
angelegtam,
|
angelegtam,
|
||||||
usereditid,
|
usereditid,
|
||||||
abweichendebezeichnung,
|
abweichendebezeichnung
|
||||||
xmlrechnung
|
|
||||||
)
|
)
|
||||||
VALUES (
|
VALUES (
|
||||||
'',
|
'',
|
||||||
@ -2661,8 +2689,7 @@ class Rechnung extends GenRechnung
|
|||||||
'".$ohnebriefpapier."',
|
'".$ohnebriefpapier."',
|
||||||
NOW(),
|
NOW(),
|
||||||
'$usereditid',
|
'$usereditid',
|
||||||
'$abweichendebezeichnung',
|
'$abweichendebezeichnung'
|
||||||
'$xmlrechnung'
|
|
||||||
)"
|
)"
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -2679,8 +2706,8 @@ class Rechnung extends GenRechnung
|
|||||||
$deliverythresholdvatid = $this->app->DB->real_escape_string($deliverythresholdvatid);
|
$deliverythresholdvatid = $this->app->DB->real_escape_string($deliverythresholdvatid);
|
||||||
$this->app->DB->Update("UPDATE rechnung SET deliverythresholdvatid = '$deliverythresholdvatid' WHERE id = $id LIMIT 1");
|
$this->app->DB->Update("UPDATE rechnung SET deliverythresholdvatid = '$deliverythresholdvatid' WHERE id = $id LIMIT 1");
|
||||||
}
|
}
|
||||||
|
$this->SetXMLRechnung($id);
|
||||||
$this->app->erp->SchnellFreigabe('rechnung',$id);
|
$this->app->erp->SchnellFreigabe('rechnung',$id);
|
||||||
|
|
||||||
$this->app->erp->LoadSteuersaetzeWaehrung($id,'rechnung',$projekt);
|
$this->app->erp->LoadSteuersaetzeWaehrung($id,'rechnung',$projekt);
|
||||||
$this->app->erp->EventAPIAdd('EventRechnungCreate',$id,'rechnung','create');
|
$this->app->erp->EventAPIAdd('EventRechnungCreate',$id,'rechnung','create');
|
||||||
|
|
||||||
@ -2991,7 +3018,7 @@ class Rechnung extends GenRechnung
|
|||||||
foreach ($zahlungen as $zahlung) {
|
foreach ($zahlungen as $zahlung) {
|
||||||
$row = array(
|
$row = array(
|
||||||
$zahlung['datum'],
|
$zahlung['datum'],
|
||||||
"<a href=\"index.php?module=".$zahlung['doc_typ']."&action=edit&id=".$zahlung['doc_id']."\">
|
"<a href=\"index.php?module=".$zahlung['doc_typ']."&action=edit&id=".$zahlung['doc_id']."\">
|
||||||
".ucfirst($zahlung['doc_typ'])."
|
".ucfirst($zahlung['doc_typ'])."
|
||||||
".$zahlung['doc_info']."
|
".$zahlung['doc_info']."
|
||||||
</a>",
|
</a>",
|
||||||
@ -3002,7 +3029,7 @@ class Rechnung extends GenRechnung
|
|||||||
}
|
}
|
||||||
|
|
||||||
$salden = $this->app->erp->GetSaldenDokument($id,'rechnung');
|
$salden = $this->app->erp->GetSaldenDokument($id,'rechnung');
|
||||||
foreach ($salden as $saldo) {
|
foreach ($salden as $saldo) {
|
||||||
$row = array(
|
$row = array(
|
||||||
'',
|
'',
|
||||||
'<b>Saldo</b>',
|
'<b>Saldo</b>',
|
||||||
@ -3011,7 +3038,7 @@ class Rechnung extends GenRechnung
|
|||||||
);
|
);
|
||||||
$et->AddRow($row);
|
$et->AddRow($row);
|
||||||
}
|
}
|
||||||
return($et->DisplayNew('return',""));
|
return($et->DisplayNew('return',""));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3033,8 +3060,8 @@ class Rechnung extends GenRechnung
|
|||||||
waehrung,
|
waehrung,
|
||||||
datum,
|
datum,
|
||||||
zahlungszieltage,
|
zahlungszieltage,
|
||||||
DATE_ADD(datum, INTERVAL zahlungszieltage DAY) as zieldatum,
|
DATE_ADD(datum, INTERVAL zahlungszieltage DAY) as zieldatum,
|
||||||
CURRENT_DATE > DATE_ADD(datum, INTERVAL zahlungszieltage DAY) as faellig,
|
CURRENT_DATE > DATE_ADD(datum, INTERVAL zahlungszieltage DAY) as faellig,
|
||||||
zahlungszielskonto,
|
zahlungszielskonto,
|
||||||
TRUNCATE(soll*(1-(zahlungszielskonto/100)),2) as skontosoll,
|
TRUNCATE(soll*(1-(zahlungszielskonto/100)),2) as skontosoll,
|
||||||
zahlungszieltageskonto,
|
zahlungszieltageskonto,
|
||||||
@ -3049,7 +3076,7 @@ class Rechnung extends GenRechnung
|
|||||||
$saldo = $this->app->erp->GetSaldoDokument($offene_rechnung['id'],'rechnung');
|
$saldo = $this->app->erp->GetSaldoDokument($offene_rechnung['id'],'rechnung');
|
||||||
if (!empty($saldo)) {
|
if (!empty($saldo)) {
|
||||||
if ($saldo['waehrung'] == $offene_rechnung['waehrung']) {
|
if ($saldo['waehrung'] == $offene_rechnung['waehrung']) {
|
||||||
$offene_rechnung['ist'] = $offene_rechnung['soll']+$saldo['betrag'];
|
$offene_rechnung['ist'] = $offene_rechnung['soll']+$saldo['betrag'];
|
||||||
// Check for skonto
|
// Check for skonto
|
||||||
$skontorelevante_zahlungen = $this->app->erp->GetSaldoDokument($offene_rechnung['id'],'rechnung','zubuchung',$offene_rechnung['zieldatumskonto'])['betrag'];
|
$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'];
|
$zielkonforme_zahlungen = $this->app->erp->GetSaldoDokument($offene_rechnung['id'],'rechnung','zubuchung',$offene_rechnung['zieldatum'])['betrag'];
|
||||||
@ -3059,7 +3086,7 @@ class Rechnung extends GenRechnung
|
|||||||
} else if (abs($skontorelevante_zahlungen-$offene_rechnung['skontosoll']) <= 0.01) {
|
} else if (abs($skontorelevante_zahlungen-$offene_rechnung['skontosoll']) <= 0.01) {
|
||||||
// Skonto ok -> book difference
|
// Skonto ok -> book difference
|
||||||
$sachkonto = $this->app->erp->Firmendaten('rechnung_skonto_kontorahmen');
|
$sachkonto = $this->app->erp->Firmendaten('rechnung_skonto_kontorahmen');
|
||||||
if (!empty($sachkonto)) {
|
if (!empty($sachkonto)) {
|
||||||
$this->app->erp->fibu_buchungen_buchen('rechnung',$offene_rechnung['id'],'kontorahmen',$sachkonto,$offene_rechnung['soll']-$skontorelevante_zahlungen,$offene_rechnung['waehrung'],date('Y-m-d'),'');
|
$this->app->erp->fibu_buchungen_buchen('rechnung',$offene_rechnung['id'],'kontorahmen',$sachkonto,$offene_rechnung['soll']-$skontorelevante_zahlungen,$offene_rechnung['waehrung'],date('Y-m-d'),'');
|
||||||
$offene_rechnung['ist'] = $offene_rechnung['soll'];
|
$offene_rechnung['ist'] = $offene_rechnung['soll'];
|
||||||
$saldo['betrag'] = 0;
|
$saldo['betrag'] = 0;
|
||||||
@ -3076,16 +3103,16 @@ class Rechnung extends GenRechnung
|
|||||||
SET
|
SET
|
||||||
ist = ".$saldo['betrag']."+soll,
|
ist = ".$saldo['betrag']."+soll,
|
||||||
zahlungsstatus = IF(".$saldo['betrag']." = 0,'bezahlt','offen')
|
zahlungsstatus = IF(".$saldo['betrag']." = 0,'bezahlt','offen')
|
||||||
WHERE id=".$offene_rechnung['id'];
|
WHERE id=".$offene_rechnung['id'];
|
||||||
$this->app->DB->Update($sql);
|
$this->app->DB->Update($sql);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$this->app->DB->Update("UPDATE rechnung SET ist = null WHERE id=".$offene_rechnung['id']);
|
$this->app->DB->Update("UPDATE rechnung SET ist = null WHERE id=".$offene_rechnung['id']);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$this->app->erp->fibu_rebuild_tables();
|
$this->app->erp->fibu_rebuild_tables();
|
||||||
// END RECALCULATE
|
// END RECALCULATE
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user