add_action('silex_action','the_po'); function po_title(){ echo "Purchase Order"; } function create_po_css() { ?> get('/purchase-order', function(){ global $hooks; global $app; $hooks->add_action('global_css', "po_css"); $hooks->add_action('global_js', "po_js"); $hooks->add_action('the_title',"po_title"); the_head(); include 'po.tpl.php'; the_footer(); return ""; }); $app->post('/purchase-order/list', function(Request $request) { $curpage = $request->get('page'); include 'po.list.php'; return ''; }); $app->get('/purchase-order/create', function(){ global $hooks; global $app; $hooks->add_action('global_css', "create_po_css"); $hooks->add_action('global_js', "create_po_js"); $hooks->add_action('the_title',"po_title"); the_head(); include 'create.tpl.php'; the_footer(); typeAhead(); return ""; }); $app->post('/purchase-order/add-purchase-order', function (Request $request) { global $db; $user_id = $_SESSION['user_id']; $forwarder_id = $request->get('forwarder_id'); $purchase_no = $request->get('purchase_no'); $company_name = $request->get('company_name'); $company_address = $request->get('company_address'); $company_city = $request->get('company_city'); $company_zip = $request->get('company_zip'); $company_state = $request->get('company_state'); $company_country = $request->get('company_country'); $company_tax_no = $request->get('company_tax_no'); $company_contact_person = $request->get('company_contact_person'); $company_contact_person_no = $request->get('company_contact_person_no'); $supplier_company_name = $request->get('supplier_company_name'); $supplier_contact_person = $request->get('supplier_contact_person'); $supplier_contact_person_no = $request->get('supplier_contact_person_no'); $bank_name = $request->get('bank_name'); $bank_address = $request->get('bank_address'); $bank_acc_no = $request->get('bank_acc_no'); $bank_swiftcode = $request->get('bank_swiftcode'); $item_remark = $request->get('item_remark'); $order_currency = $request->get('order_currency'); //$custom_form = $request->get('custom_form'); $purchaseorderitems = $request->get('purchaseorderitems'); $company_id = $_SESSION['company_id']; $branch_id = $_SESSION['branch_id']; $db->bind("marking_no", ""); $db->bind("purchase_no", $purchase_no); $db->bind("company_name", $company_name); $db->bind("company_address", $company_address); $db->bind("company_city", $company_city); $db->bind("company_zip", $company_zip); $db->bind("company_state", $company_state); $db->bind("company_country", $company_country); $db->bind("company_tax_no", $company_tax_no); $db->bind("company_contact_person", $company_contact_person); $db->bind("company_contact_person_no", $company_contact_person_no); $db->bind("supplier_company_name", $supplier_company_name); $db->bind("supplier_contact_person", $supplier_contact_person); $db->bind("supplier_contact_person_no", $supplier_contact_person_no); $db->bind("bank_name", $bank_name); $db->bind("bank_address", $bank_address); $db->bind("bank_acc_no", $bank_acc_no); $db->bind("bank_swiftcode", $bank_swiftcode); $db->bind("order_currency", $order_currency); //$db->bind("order_remark", json_encode($custom_form)); $db->bind("item_remark", $item_remark); $db->bind("branch_id", $branch_id); $db->bind("company_id", $company_id); $db->bind("forwarder_id", $forwarder_id); $poCreate = $db->query("INSERT INTO purchase_orders (marking_no, purchase_no, company_name, company_address, company_city, company_zip, company_state, company_country, company_tax_no, company_contact_person, company_contact_person_no, supplier_company_name, supplier_contact_person, supplier_contact_person_no, bank_name, bank_address, bank_acc_no, bank_swiftcode, order_currency, item_remark, branch_id, company_id, forwarder_id) VALUES (:marking_no,:purchase_no,:company_name,:company_address,:company_city,:company_zip,:company_state,:company_country,:company_tax_no,:company_contact_person,:company_contact_person_no,:supplier_company_name,:supplier_contact_person,:supplier_contact_person_no,:bank_name,:bank_address,:bank_acc_no,:bank_swiftcode,:order_currency,:item_remark,:branch_id,:company_id,:forwarder_id);"); $po_id = $db->lastInsertId(); if($poCreate){ $ordercountCreate = $db->query("INSERT INTO order_count (id) VALUES (NULL);"); $order_no = sprintf('%05d', $db->lastInsertId()); $marking = getMarkingNo($company_id, $forwarder_id, $branch_id); $marking_no = getMarkingNo($company_id, $forwarder_id, $branch_id). "/" .$order_no; $db->bind("order_no", $order_no); $db->bind("marking", $marking); $db->bind("marking_no", $marking_no); $db->bind("po_id", $po_id); $poUpdate = $db->query("UPDATE `purchase_orders` SET `marking_no`=:marking_no, `marking`=:marking, `order_no`=:order_no WHERE po_id = :po_id"); foreach ($purchaseorderitems as $key => $purchaseorderitem) { $subtotal = $purchaseorderitem['quantity'] * $purchaseorderitem['unit_price']; $db->bind("product_name", $purchaseorderitem['product_name']); $db->bind("item_code", $purchaseorderitem['item_code']); $db->bind("model_no", $purchaseorderitem['model_no']); $db->bind("description", $purchaseorderitem['description']); $db->bind("quantity", $purchaseorderitem['quantity']); $db->bind("uom", $purchaseorderitem['uom']); $db->bind("unit_price", $purchaseorderitem['unit_price']); $db->bind("subtotal", $subtotal); $db->bind("po_id", $po_id); $poItemCreate = $db->query("INSERT INTO purchase_order_items (product_name, item_code, model_no, description, quantity, uom, unit_price, subtotal, po_id) VALUES (:product_name, :item_code, :model_no, :description, :quantity, :uom, :unit_price, :subtotal, :po_id);"); } } if ($poItemCreate) { $chat_name = $order_no; //create messages $db->bind("message", "Your purchase order have been created."); $db->bind("chat_type", "10"); $db->bind("from_id", $user_id); $createMessage = $db->query("INSERT INTO notice_messages(message,chat_type,from_id) VALUES (:message,:chat_type,:from_id)"); $message_id = $db->lastInsertId(); //create room for user_id $db->bind("chat_name",$chat_name); $db->bind("owner_id", $user_id); $db->bind("po_id", $po_id); $db->bind("room_type", "order"); $createRoom = $db->query("INSERT INTO notice_rooms(chat_name,owner_id,po_id,room_type) VALUES ( :chat_name, :owner_id, :po_id, :room_type)"); $room_id = $db->lastInsertId(); //create members for room (current user) $db->bind("user_id", $user_id); $db->bind("room_id", $room_id); $createMembers = $db->query("INSERT INTO notice_members(room_id,user_id,status) VALUES (:room_id, :user_id, 1)"); //create unread notification $db->bind("room_id", $room_id); $db->bind("message_id", $message_id); $db->bind("user_id", $user_id); $createMembers = $db->query("INSERT INTO notice_unread(room_id,message_id,user_id, status) VALUES (:room_id, :message_id,:user_id, 0)"); $db->bind("forwarder_id", $forwarder_id); $companyStaffs = $db->query("SELECT * FROM user_company WHERE company_id = :forwarder_id and position = 1"); foreach($companyStaffs as $key => $value){ $db->bind("user_id", $value['user_id']); $db->bind("room_id", $room_id); $createMembers = $db->query("INSERT INTO notice_members(room_id,user_id,status) VALUES (:room_id, :user_id, 1)"); //create unread notification for admin staffs $db->bind("room_id", $room_id); $db->bind("message_id", $message_id); $db->bind("user_id", $value['user_id']); $createMembers = $db->query("INSERT INTO notice_unread(room_id,message_id,user_id, status) VALUES (:room_id, :message_id,:user_id, 0)"); } //connecting messages with room $db->bind("room_id", $room_id); $db->bind("message_id", $message_id); $createMembers = $db->query("INSERT INTO notice_room_message(room_id,message_id) VALUES (:room_id, :message_id)"); return new Response($po_id, 200); } else { return new Response($po_id, 201); } }); $app->post('/purchase-order/getMarkingNumber', function(Request $request) { global $db; $forwarder_id = $request->get('forwarder_id'); $company_id = $_SESSION['company_id']; $branch_id = $_SESSION['branch_id']; $marking_no = getMarkingNo($company_id, $forwarder_id, $branch_id); $order_no = getOrderNumber($company_id, $branch_id); return $marking_no . "/" . $order_no; }); $app->get('/purchase-order/details/{id}', function ($id) use ($app) { global $db; global $hooks; global $po_id; $po_id = $id; if (!isset($id) || !isPOMine($id)) { return $app->redirect('/purchase-order'); } $hooks->add_action('global_css', "create_po_css"); $hooks->add_action('global_js', "po_js"); $hooks->add_action('the_title',"po_title"); the_head(); include 'po.details.php'; the_footer(); return ""; }); $app->post('/purchase-order/getModalSuccess', function(Request $request) { global $db; $po_id = $request->get('po_id'); $marking_no = getPOData($po_id, "marking_no"); $order_no = substr($marking_no, -5); $html = '

Your order '.$order_no.' have successfully created. Please procees to action below :

Close  Create New  Chat'; return $html; }); } include 'po.func.php';