Add Z report (issue #17)

master
Skylar Ittner il y a 6 ans
Parent 2dd2374b12
révision 217b7befd2

@ -433,10 +433,29 @@ switch ($VARS['action']) {
exit(json_encode(["status" => "ERROR"]));
}
$receipt = GenerateReceipt::getReceipt(GenerateReceipt::RECEIPT_TYPE_X, null, $VARS['register']);
$receipt = GenerateReceipt::getReceipt(GenerateReceipt::RECEIPT_TYPE_X, $VARS['register']);
exit(GenerateReceipt::outputReceipt($receipt, $format, $width, "X Report"));
break;
case "zreport":
require_once __DIR__ . "/lib/generatereceipt.php";
$format = "html";
$width = 64;
if (isset($VARS['width']) && preg_match("/[0-9]+/", $VARS['width']) && (int) $VARS['width'] > 0) {
$width = (int) $VARS['width'];
}
if (isset($VARS['format'])) {
$format = $VARS['format'];
}
if (!$database->has('cash_drawer', ['AND' => ['open[!]' => null, 'close[!]' => null, 'cashid' => $VARS['cash']]])) {
header("Content-Type: application/json");
exit(json_encode(["status" => "ERROR"]));
}
$receipt = GenerateReceipt::getReceipt(GenerateReceipt::RECEIPT_TYPE_Z, $VARS['cash']);
exit(GenerateReceipt::outputReceipt($receipt, $format, $width, "Z Report"));
break;
case "session_keepalive":
header("Content-Type: application/json");
exit(json_encode(["status" => "OK"]));

@ -116,4 +116,5 @@ define("STRINGS", [
"manage register" => "Manage register",
"manage" => "Manage",
"x report" => "X Report",
"z report" => "Z Report",
]);

@ -12,7 +12,7 @@ class GenerateReceipt {
const RECEIPT_TYPE_TRANSACTION = 1;
const RECEIPT_TYPE_X = 2;
const RECEIPT_TYPE_Y = 3;
const RECEIPT_TYPE_Z = 3;
static function transactionReceipt($transaction) {
global $database;
@ -107,6 +107,7 @@ class GenerateReceipt {
'transactions.cashid' => $cash['cashid'],
]
]);
$transactioncount = $database->count('transactions', ['cashid' => $cash['cashid']]);
foreach ($paymenttypes as $t) {
$balance[$t['type']] = 0.0;
}
@ -118,6 +119,7 @@ class GenerateReceipt {
$receipt->appendLine(new ReceiptLine("Date:", "", date(DATETIME_FORMAT)));
$receipt->appendLine(new ReceiptLine("Register:", "", $registername));
$receipt->appendLine(new ReceiptLine("Transactions:", "", $transactioncount));
$receipt->appendBlank();
$receipt->appendBreak();
@ -143,16 +145,72 @@ class GenerateReceipt {
return $receipt;
}
static function getReceipt($type, $transaction = null, $register = null, $cashid = null) {
static function zReceipt($cashid) {
global $database;
$receipt = new Receipt();
$cash = $database->get('cash_drawer', ['open', 'close', 'start_amount', 'end_amount', 'cashid', 'registerid'], ['cashid' => $cashid]);
$registername = $database->get('registers', 'registername', ['registerid' => $cash['registerid']]);
$balance = [];
$paymenttypes = $database->select('payment_types', ['typename (type)', 'text']);
$payments = $database->select("payments", [
"[>]transactions" => ['txid' => 'txid'],
"[>]payment_types" => ['type' => 'typeid']
], ['amount', 'typename (type)'], [
'AND' => [
'transactions.cashid' => $cash['cashid'],
]
]);
$transactioncount = $database->count('transactions', ['cashid' => $cashid]);
foreach ($paymenttypes as $t) {
$balance[$t['type']] = 0.0;
}
foreach ($payments as $p) {
$balance[$p['type']] += $p['amount'];
}
$receipt->appendHeader(new ReceiptLine(lang("z report", false), "", "", ReceiptLine::LINEFORMAT_BOLD | ReceiptLine::LINEFORMAT_CENTER));
$receipt->appendLine(new ReceiptLine("Date:", "", date(DATETIME_FORMAT)));
$receipt->appendLine(new ReceiptLine("Register:", "", $registername));
$receipt->appendLine(new ReceiptLine("Transactions:", "", $transactioncount));
$receipt->appendBlank();
$receipt->appendBreak();
$receipt->appendLine(new ReceiptLine("Opening", "", "", ReceiptLine::LINEFORMAT_CENTER));
$receipt->appendBreak();
$receipt->appendLine(new ReceiptLine("Date:", "", date(DATETIME_FORMAT, strtotime($cash['open']))));
$receipt->appendLine(new ReceiptLine("Cash:", "", '$' . number_format($cash['start_amount'], 2)));
$receipt->appendBlank();
$receipt->appendBreak();
$receipt->appendLine(new ReceiptLine("Closing", "", "", ReceiptLine::LINEFORMAT_CENTER));
$receipt->appendBreak();
$receipt->appendLine(new ReceiptLine("Date:", "", date(DATETIME_FORMAT, strtotime($cash['close']))));
$receipt->appendLine(new ReceiptLine("Cash:", "", '$' . number_format($cash['end_amount'], 2)));
$receipt->appendBlank();
$receipt->appendBreak();
$receipt->appendLine(new ReceiptLine("Sales", "", "", ReceiptLine::LINEFORMAT_CENTER));
$receipt->appendBreak();
foreach ($paymenttypes as $t) {
$receipt->appendLine(new ReceiptLine(lang($t['text'], false) . ":", "", '$' . number_format($balance[$t['type']], 2)));
}
return $receipt;
}
static function getReceipt($type, $data) {
switch ($type) {
case GenerateReceipt::RECEIPT_TYPE_X:
return GenerateReceipt::xReceipt($register);
return GenerateReceipt::xReceipt($data);
break;
case GenerateReceipt::RECEIPT_TYPE_Y:
return GenerateReceipt::Receipt($register, $cashid);
case GenerateReceipt::RECEIPT_TYPE_Z:
return GenerateReceipt::zReceipt($data);
break;
case GenerateReceipt::RECEIPT_TYPE_TRANSACTION:
return GenerateReceipt::transactionReceipt($transaction);
return GenerateReceipt::transactionReceipt($data);
break;
default:
return new Receipt();

Chargement…
Annuler
Enregistrer