215 lines
9.5 KiB
PHP
215 lines
9.5 KiB
PHP
|
|
<?php
|
|||
|
|
|
|||
|
|
include ("class.InvoiceItems.php");
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* Klasa reprezentuj<EFBFBD>ca faktur<EFBFBD>
|
|||
|
|
*
|
|||
|
|
* @author Krzysztof Raciniewski
|
|||
|
|
*
|
|||
|
|
*/
|
|||
|
|
class Invoice {
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* Pobiera jeden dokument o unikalnym identyfikatorze ID
|
|||
|
|
*
|
|||
|
|
* @param $id -
|
|||
|
|
* identyfikator faktury
|
|||
|
|
*/
|
|||
|
|
public static function getById($id) {
|
|||
|
|
$db = $GLOBALS ['db'];
|
|||
|
|
$query = "SELECT * FROM ecminvoiceouts WHERE id='$id'";
|
|||
|
|
$result = $db->query($query);
|
|||
|
|
$invoiceData = $result->fetch_assoc();
|
|||
|
|
$invoiceData ["items"] = InvoiceItems::getByInvoiceId($id);
|
|||
|
|
$invoiceData ["account"] = Account::getByInvoiceId($id);
|
|||
|
|
return $invoiceData;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* Pobiera wszystkie dokumenty z podanego przedzia<EFBFBD>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, $pdf_type, $category, $type, $contractorId = FALSE, $stock_id = FALSE) {
|
|||
|
|
$db = $GLOBALS ['db'];
|
|||
|
|
global $app_list_strings;
|
|||
|
|
if ($_GET ['selectStock'] != "")
|
|||
|
|
$stock_id = $_GET['selectStock'];
|
|||
|
|
|
|||
|
|
|
|||
|
|
$query = "SELECT * FROM ecminvoiceouts
|
|||
|
|
WHERE register_date >= '$date_from'
|
|||
|
|
AND register_date <='$date_to'
|
|||
|
|
AND type LIKE '$type' AND deleted=0 AND canceled=0 ";
|
|||
|
|
|
|||
|
|
|
|||
|
|
if (!empty($contractorId) && $contractorId != "") {
|
|||
|
|
$query .= " AND parent_id = '" . $contractorId . "'";
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if (!empty($stock_id) && $stock_id != "") {
|
|||
|
|
$query .= " AND stock_id = '" . $stock_id . "' ";
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if (isset($pdf_type) && in_array(true, $pdf_type)) {
|
|||
|
|
$query .= ' AND pdf_type IN (';
|
|||
|
|
foreach ($pdf_type as $key => $value) {
|
|||
|
|
if ($value == true) {
|
|||
|
|
$query .= "'" . $key . "' ,";
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
$query = rtrim($query, ",");
|
|||
|
|
$query .=") ";
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if (isset($category) && count($category) > 0 && count($category) != count($app_list_strings['ecminvoiceouts_category_dom'])) {
|
|||
|
|
if (in_array(" ", $category) && count($category) == 1) {
|
|||
|
|
$query .= " AND category IS NULL ";
|
|||
|
|
} else {
|
|||
|
|
if(in_array(" ", $category)){
|
|||
|
|
$query .= " AND category IS NULL ";
|
|||
|
|
}
|
|||
|
|
$query .= " AND category IN (";
|
|||
|
|
foreach ($category as $key => $value) {
|
|||
|
|
if ($value != " ") {
|
|||
|
|
$query .= "'" . $value . "' ,";
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
$query = rtrim($query, ",");
|
|||
|
|
$query .=") ";
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
$query .= " ORDER BY date_entered 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 ["sell_date"]);
|
|||
|
|
$invoiceData ["sell_date"] = $date->format('d.m.Y');
|
|||
|
|
$invoiceData ["items"] = InvoiceItems::getByInvoiceId($invoiceData ["id"]);
|
|||
|
|
$invoiceData ["account"] = Account::getByAccountId($invoiceData ["parent_id"]);
|
|||
|
|
|
|||
|
|
if ($type == "correct") {
|
|||
|
|
$invoiceData ["showType"] = "FVK";
|
|||
|
|
} else {
|
|||
|
|
$invoiceData ["showType"] = "FV";
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 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"] != NULL ? $invoiceData["currency_value"] : $invoiceData["currency_value_nbp"]);
|
|||
|
|
$invoiceData ["netto7"] = Invoice::getNetto($invoiceData ["vats_summary"], "7%", $invoiceData["currency_value"] != NULL ? $invoiceData["currency_value"] : $invoiceData["currency_value_nbp"]);
|
|||
|
|
$invoiceData ["netto8"] = Invoice::getNetto($invoiceData ["vats_summary"], "8%", $invoiceData["currency_value"] != NULL ? $invoiceData["currency_value"] : $invoiceData["currency_value_nbp"]);
|
|||
|
|
$invoiceData ["netto22"] = Invoice::getNetto($invoiceData ["vats_summary"], "22%", $invoiceData["currency_value"] != NULL ? $invoiceData["currency_value"] : $invoiceData["currency_value_nbp"]);
|
|||
|
|
$invoiceData ["netto23"] = Invoice::getNetto($invoiceData ["vats_summary"], "23%", $invoiceData["currency_value"] != NULL ? $invoiceData["currency_value"] : $invoiceData["currency_value_nbp"]);
|
|||
|
|
|
|||
|
|
$invoiceData ["vat0"] = Invoice::getVat($invoiceData ["vats_summary"], "0%", $invoiceData["currency_value"] != NULL ? $invoiceData["currency_value"] : $invoiceData["currency_value_nbp"]);
|
|||
|
|
$invoiceData ["vat7"] = Invoice::getVat($invoiceData ["vats_summary"], "7%", $invoiceData["currency_value"] != NULL ? $invoiceData["currency_value"] : $invoiceData["currency_value_nbp"]);
|
|||
|
|
$invoiceData ["vat8"] = Invoice::getVat($invoiceData ["vats_summary"], "8%", $invoiceData["currency_value"] != NULL ? $invoiceData["currency_value"] : $invoiceData["currency_value_nbp"]);
|
|||
|
|
$invoiceData ["vat22"] = Invoice::getVat($invoiceData ["vats_summary"], "22%", $invoiceData["currency_value"] != NULL ? $invoiceData["currency_value"] : $invoiceData["currency_value_nbp"]);
|
|||
|
|
$invoiceData ["vat23"] = Invoice::getVat($invoiceData ["vats_summary"], "23%", $invoiceData["currency_value"] != NULL ? $invoiceData["currency_value"] : $invoiceData["currency_value_nbp"]);
|
|||
|
|
|
|||
|
|
|
|||
|
|
// 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
|
|||
|
|
//echo 'currency_value_nbp: ' . $data["currency_value_nbp"] . '<br>';
|
|||
|
|
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"];
|
|||
|
|
} elseif ($data["currency_value_nbp"] != NULL && $data["currency_value_nbp"] != 0 && $data["currency_value_nbp"] != '') {
|
|||
|
|
$data["total_netto"] *= $data["currency_value_nbp"];
|
|||
|
|
$data["total_brutto"] *= $data["currency_value_nbp"];
|
|||
|
|
// $data["purchase_price"] *= $data["currency_value_nbp"];
|
|||
|
|
$data["margin"] *= $data["currency_value_nbp"];
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 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;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
?>
|