has('customers', ['customerid' => $customer])) {
exit(json_encode(["status" => "ERROR", "message" => lang("invalid customer", false)]));
// exit(json_encode(["status" => "ERROR", "message" => lang("", false)]));
}
if ($register != "" && !$database->has('registers', ['registerid' => $register])) {
exit(json_encode(["status" => "ERROR", "message" => lang("invalid register", false)]));
}
if ($register != "" && !$database->has('cash_drawer', ['AND' => ['registerid' => $register, 'close' => null]])) {
exit(json_encode(["status" => "ERROR", "message" => lang("cash not open", false)]));
}
$totalcharge = 0.00;
$totalpaid = 0.00;
foreach ($items as $i) {
$totalcharge += $i['each'] * $i['qty'];
if (!$binstack->has('items', ['itemid' => $i['id']])) {
exit(json_encode(["status" => "ERROR", "message" => lang("invalid item", false)]));
}
}
foreach ($payments as $p) {
if (!$database->has('payment_types', ['typename' => $p['type']])) {
exit(json_encode(["status" => "ERROR", "message" => lang("invalid payment type", false)]));
}
$totalpaid += $p['amount'];
if ($p['type'] == "giftcard") {
if (!$database->has('certificates', ['AND' => ['amount[>=]' => $p['amount'], 'deleted[!]' => 1, 'certcode' => $p['code']]])) {
exit(json_encode(["status" => "ERROR", "message" => lang("invalid giftcard", false)]));
}
}
}
if ($totalcharge > $totalpaid) {
exit(json_encode(["status" => "ERROR", "message" => lang("insufficient payment", false)]));
}
$cashid = null;
if ($register != "") {
$cashid = $database->get('cash_drawer', 'cashid', ['AND' => ['registerid' => $register, 'close' => null]]);
}
$database->insert('transactions', [
'txdate' => date('Y-m-d H:i:s'),
'customerid' => ($customer != "" ? $customer : null),
'type' => 1,
'cashier' => $_SESSION['uid'],
'cashid' => $cashid
]);
$txid = $database->id();
foreach ($items as $i) {
$item = $binstack->get('items', ['name', 'qty'], ['itemid' => $i['id']]);
$database->insert('lines', [
'txid' => $txid,
'amount' => $i['each'],
'name' => $item['name'],
'itemid' => $i['id'],
'qty' => $i['qty']
]);
$binstack->update('items', [
'qty[-]' => $i['qty']
], [
'itemid' => $i['id']
]);
}
foreach ($payments as $p) {
$certid = null;
if ($p['type'] == "giftcard") {
$certid = $database->get('certificates', 'certid', ['certcode' => $p['code']]);
}
$type = $database->get('payment_types', 'typeid', ['typename' => $p['type']]);
$database->insert('payments', [
'amount' => $p['amount'],
'data' => '',
'type' => $type,
'txid' => $txid,
'certid' => $certid
]);
}
exit(json_encode(["status" => "OK", "txid" => $txid]));
break;
case "getreceipt":
header("Content-Type: text/html");
if (!$database->has('transactions', ['txid' => $VARS['txid']])) {
exit(json_encode(["status" => "ERROR", "txid" => null]));
}
$tx = $database->get('transactions', ['txid', 'txdate', 'customerid', 'type', 'cashier'], ['txid' => $VARS['txid']]);
$txid = $tx['txid'];
$datetime = date(DATETIME_FORMAT, strtotime($tx['txdate']));
$type = $tx['type'];
$cashier = getUserByID($tx['cashier'])['name'];
$customerid = $tx['customerid'];
$customerline = (is_null($customerid) ? "" : "
Customer: $customerid");
$itemhtml = "";
$items = $database->select('lines', ['amount', 'name', 'itemid', 'qty'], ['txid' => $txid]);
$total = 0.0;
$paid = 0.0;
foreach ($items as $i) {
$itemhtml .= "\n";
$itemhtml .= '