Files
crm.twinpol.com/modules/EcmReports/class/class.PurchaseInvoice.php
2025-05-12 15:44:39 +00:00

183 lines
7.9 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
include ("class.PurchaseInvoiceItems.php");
/**
* Klasa reprezentujпїЅca fakturпїЅ
*
* @author Kate
*
*/
class Invoice {
/**
* Pobiera jeden dokument o unikalnym identyfikatorze ID
*
* @param $id -
* identyfikator faktury
*/
public static function getById($id) {
$db = $GLOBALS ['db'];
$query = "SELECT * FROM documents d LEFT OUTER JOIN documents_vat dv on d.id= dv.document_id WHERE d.id='$id'";
$result = $db->query ( $query );
$invoiceData = $result->fetch_assoc ();
$invoiceData ["items"] = PurchaseInvoiceItems::getByInvoiceId ( $id );
$invoiceData ["account"] = Account::getByInvoiceId ( $id );
return $invoiceData;
}
/**
* Pobiera wszystkie dokumenty z podanego przedziaпїЅu dat
*
* @param $date_from -
* data od( w formacie YYYY-mm-dd )
* @param $date_to -
* data do( w formacie YYYY-mm-dd )
* @param $type -
* typ faktury(normal/correct)
*/
public static function getBetweenDate($date_from, $date_to, $category, $contractorId) {
$db = $GLOBALS ['db'];
$query = "SELECT * FROM documents
WHERE register_date >= '$date_from'
AND register_date <='$date_to'
AND register_date IS NOT NULL
AND register_date >= STR_TO_DATE('01.01.1990', '%d.%m.%Y')
AND register_date <= STR_TO_DATE('01.01.2515', '%d.%m.%Y')
AND deleted=0
AND canceled=0
AND sdocument_number IS NOT NULL
";
if (! empty ( $contractorId )) {
$query .= " AND parent_id = '" . $contractorId . "'";
}
if( count( $category ) != 0 && $category[0] != "%" ) {
for( $i = 0; $i < count($category); $i++ ) {
if( $i == 0) {
$query .= " AND category = '".$category[$i]."'";
} else {
$query .= " OR category = '".$category[$i]."'";
}
}
}
$query .= " ORDER BY rgister_date asc";
$result = $db->query ( $query );
$invoicesArray = array ();
while ( $invoiceData = $result->fetch_assoc () ) {
// Formatowanie dat zgodnie z datД… systemowД…
$date = new DateTime ( $invoiceData ["register_date"] );
$invoiceData ["register_date"] = $date->format ( 'd.m.Y' );
$date = new DateTime ( $invoiceData ["document_date"] );
$invoiceData ["document_date"] = $date->format ( 'd.m.Y' );
$invoiceData ["items"] = PurchaseInvoiceItems::getByInvoiceId ( $invoiceData ["id"] );
$invoiceData ["account"] = Account::getByAccountId ( $invoiceData ["parent_id"] );
// MnoЕјД™ odpowiednie sumy przez currency_value
Invoice::multiplyValuesByCurrencyValue ( $invoiceData );
// Obliczam wysokoЕД‡ VAT i sumД™ netto
$invoiceData ["netto0"] = Invoice::getNetto ( $invoiceData ["vats_summary"], "0%", $invoiceData["currency_value"]);
$invoiceData ["netto7"] = Invoice::getNetto ( $invoiceData ["vats_summary"], "7%", $invoiceData["currency_value"]);
$invoiceData ["netto8"] = Invoice::getNetto ( $invoiceData ["vats_summary"], "8%", $invoiceData["currency_value"]);
$invoiceData ["netto22"] = Invoice::getNetto ( $invoiceData ["vats_summary"], "22%", $invoiceData["currency_value"]);
$invoiceData ["netto23"] = Invoice::getNetto ( $invoiceData ["vats_summary"], "23%", $invoiceData["currency_value"]);
$invoiceData ["vat0"] = Invoice::getVat ( $invoiceData ["vats_summary"], "0%", $invoiceData["currency_value"]);
$invoiceData ["vat7"] = Invoice::getVat ( $invoiceData ["vats_summary"], "7%", $invoiceData["currency_value"]);
$invoiceData ["vat8"] = Invoice::getVat ( $invoiceData ["vats_summary"], "8%", $invoiceData["currency_value"]);
$invoiceData ["vat22"] = Invoice::getVat ( $invoiceData ["vats_summary"], "22%", $invoiceData["currency_value"]);
$invoiceData ["vat23"] = Invoice::getVat ( $invoiceData ["vats_summary"], "23%", $invoiceData["currency_value"]);
// JeЕјeli koszt wЕasny na fakturze nie istnieje albo nulem
if ($invoiceData ["purchase_price"] == NULL || $invoiceData ["purchase_price"] == "") {
$invoiceData ["purchase_price"] = 0.00;
}
// Wyliczam marЕјД™ dla faktury
// if ($type != "correct") {
// $invoiceData ["marginInPercent"] = ($invoiceData ['total_netto'] - $invoiceData ['purchase_price']) / ($invoiceData ['total_netto']) * 100;
// $invoiceData ["margin"] = $invoiceData ['total_netto'] - $invoiceData ['purchase_price'];
// } else {
// $invoiceData ["marginInPercent"] = 0;
// $invoiceData ["margin"] = 0;
// }
array_push ( $invoicesArray, $invoiceData );
}
return $invoicesArray;
}
/**
* Funkcja mnoЕјy wszystkie sumy przez currency_value o ile currency_value nie jest 0
*
* @param $data -
* tablica danych przekazana jako referencja
*/
public static function multiplyValuesByCurrencyValue(&$data) {
// JeЕјeli kurs walutowy nie jest zerem ani pustym polem wtedy naleЕјy przemnoЕјyД‡ wszystkie wartoЕci
// bo wszystko musi byД‡ w zЕotГіwkach
if( $data["currency_value"] != NULL && $data["currency_value"] != 0 && $data["currency_value"] != '') {
$data["total_netto"] *= $data["currency_value"];
$data["total_brutto"] *= $data["currency_value"];
$data["purchase_price"] *= $data["currency_value"];
$data["margin"] *= $data["currency_value"];
}
}
/**
* Funkcja wyciД…ga netto z bazy( w bazie zapisane jest to w formacie: 23%:2000.00:460.00:2460.00 )
* @param unknown $formatted_string
* @param unknown $param_vat
* @param unknown $currency_value
* @return Ambigous <NULL, unknown>
*/
public static function getNetto($formatted_string, $param_vat, $currency_value) {
$return = NULL;
$vats = explode( ";" , $formatted_string);
foreach( $vats as $vat ) {
$split_values = explode( ":" , $vat );
if( $split_values[0] == $param_vat ) {
// Ceny na itemach wymagajД… przemnoЕјenia przez kurs walutowy
($currency_value == NULL || $currency_value == "") ? $currency_value = 1 : $currency_value = $currency_value;
$return = $split_values[1] * $currency_value;
}
}
return $return;
}
/**
* Funkcja wyciД…ga vat z bazy( w bazie zapisane jest to w formacie: 23%:2000.00:460.00:2460.00 )
* @param unknown $formatted_string
* @param unknown $param_vat
* @param unknown $currency_value
* @return Ambigous <NULL, unknown>
*/
public static function getVat($formatted_string, $param_vat, $currency_value) {
$return = NULL;
$vats = explode( ";" , $formatted_string);
foreach( $vats as $vat ) {
$split_values = explode( ":" , $vat );
if( $split_values[0] == $param_vat ) {
// Ceny na itemach wymagajД… przemnoЕјenia przez kurs walutowy
($currency_value == NULL || $currency_value == "") ? $currency_value = 1 : $currency_value = $currency_value;
$return = $split_values[2] * $currency_value;
}
}
return $return;
}
}
?>