147 lines
5.5 KiB
PHP
Executable File
147 lines
5.5 KiB
PHP
Executable File
<?php
|
|
include ("class.ReceiptItems.php");
|
|
|
|
/**
|
|
* Klasa reprezentująca paragon
|
|
*
|
|
* @author Krzysztof Raciniewski
|
|
*
|
|
*/
|
|
class Receipt {
|
|
|
|
/**
|
|
* Pobiera jeden paragon o unikalnym identyfikatorze ID
|
|
*
|
|
* @param $id -
|
|
* identyfikator paragonu
|
|
*/
|
|
public static function getById($id) {
|
|
$db = $GLOBALS ['db'];
|
|
$query = "SELECT * FROM ecmreceipts WHERE id='$id'";
|
|
$result = $db->query ( $query );
|
|
$receiptData = $result->fetch_assoc ();
|
|
$receiptData ["items"] = ReceiptItems::getByReceiptId ( $id );
|
|
$receiptData ["account"] = Account::getByInvoiceId ( $id );
|
|
return $receiptData;
|
|
}
|
|
|
|
/**
|
|
* Pobiera wszystkie paragony 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 paragonu(normal/correct)
|
|
*/
|
|
public static function getBetweenDate($date_from, $date_to, $type, $contractorId) {
|
|
$db = $GLOBALS ['db'];
|
|
$query = "SELECT * FROM ecmreceipts
|
|
WHERE date_entered >= '$date_from'
|
|
AND date_entered <='$date_to'
|
|
AND type LIKE '$type' AND deleted=0 ";
|
|
|
|
if (! empty ( $contractorId )) {
|
|
$query .= " AND parent_id = '" . $contractorId . "'";
|
|
}
|
|
|
|
$result = $db->query ( $query );
|
|
|
|
$receiptsArray = array ();
|
|
while ( $receiptData = $result->fetch_assoc () ) {
|
|
// Formatowanie dat zgodnie z datą systemową
|
|
$date = new DateTime ( $receiptData ["register_date"] );
|
|
$receiptData ["register_date"] = $date->format ( 'd.m.Y' );
|
|
$date = new DateTime ( $receiptData ["sell_date"] );
|
|
$receiptData ["sell_date"] = $date->format ( 'd.m.Y' );
|
|
$receiptData ["items"] = ReceiptItems::getByReceiptId ( $receiptData ["id"] );
|
|
$receiptData ["account"] = Account::getByAccountId ( $receiptData ["parent_id"] );
|
|
|
|
// Mnożę odpowiednie sumy przez currency_value
|
|
Invoice::multiplyValuesByCurrencyValue ( $receiptData );
|
|
|
|
// Obliczam wysokość VAT i sumę netto
|
|
$receiptData ["netto0"] = Receipt::getNetto ( $receiptData ["vats_summary"], "0%", $receiptData["currency_value"]);
|
|
$receiptData ["netto7"] = Receipt::getNetto ( $receiptData ["vats_summary"], "7%", $receiptData["currency_value"]);
|
|
$receiptData ["netto8"] = Receipt::getNetto ( $receiptData ["vats_summary"], "8%", $receiptData["currency_value"]);
|
|
$receiptData ["netto22"] = Receipt::getNetto ( $receiptData ["vats_summary"], "22%", $receiptData["currency_value"]);
|
|
$receiptData ["netto23"] = Receipt::getNetto ( $receiptData ["vats_summary"], "23%", $receiptData["currency_value"]);
|
|
|
|
$receiptData ["vat0"] = Receipt::getVat ( $receiptData ["vats_summary"], "0%", $receiptData["currency_value"]);
|
|
$receiptData ["vat7"] = Receipt::getVat ( $receiptData ["vats_summary"], "7%", $receiptData["currency_value"]);
|
|
$receiptData ["vat8"] = Receipt::getVat ( $receiptData ["vats_summary"], "8%", $receiptData["currency_value"]);
|
|
$receiptData ["vat22"] = Receipt::getVat ( $receiptData ["vats_summary"], "22%", $receiptData["currency_value"]);
|
|
$receiptData ["vat23"] = Receipt::getVat ( $receiptData ["vats_summary"], "23%", $receiptData["currency_value"]);
|
|
|
|
// Wyliczam marżę dla paragonu( nie ma to chyba sensu, ale ... :D )
|
|
$receiptData["margin"] = ($receiptData['total_netto'] - $receiptData['purchase_price'])/($receiptData['total_netto'])*100;
|
|
|
|
if ($type == "correct") {
|
|
$receiptData ["showType"] = "PRK";
|
|
$receiptData ["marginInPercent"] = 0;
|
|
$receiptData ["margin"] = 0;
|
|
} else {
|
|
$receiptData ["showType"] = "PR";
|
|
$receiptData ["marginInPercent"] = ($receiptData ['total_netto'] - $receiptData ['purchase_price']) / ($receiptData ['total_netto']) * 100;
|
|
$receiptData ["margin"] = $receiptData ['total_netto'] - $receiptData ['purchase_price'];
|
|
}
|
|
|
|
// Jeżeli koszt własny na fakturze jest zerem albo nulem
|
|
if ($receiptData ["purchase_price"] == NULL || $receiptData ["purchase_price"] == "") {
|
|
$receiptData ["purchase_price"] = "0.00";
|
|
}
|
|
array_push ( $receiptsArray, $receiptData );
|
|
}
|
|
|
|
return $receiptsArray;
|
|
}
|
|
|
|
|
|
/**
|
|
* 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;
|
|
}
|
|
}
|
|
|
|
?>
|