示例#1
0
function processFile($filename)
{
    //extract the filename to get the exact filename on the folder
    $newFile = substr($filename, 3);
    $dirname = substr($filename, 0, 2);
    $fs = new Filesystem();
    if ($fs->exists('../Repo/' . $dirname . '/' . $newFile)) {
        $xml = simplexml_load_file('../Repo/' . $dirname . '/' . $newFile, null, LIBXML_NOCDATA);
        $newXML = json_decode(json_encode($xml), true);
        $data = formulateData($newXML, $dirname);
        //insert data to db
        $po = new PurchaseOrder();
        $po->setFilename($newFile);
        $po->setStore($dirname);
        $po->setCustomerCode($data['customer_code']);
        $po->setDeliveryDate($data['delivery_date']);
        $po->setNumber($data['number']);
        $po->save();
        $po_id = $po->getId();
        //insert all items
        foreach ($data['items'] as $key => $value) {
            $items = new Item();
            $items->setPurchaseOrderId($po_id);
            $items->setUpc($value['upc']);
            $items->setQty($value['qty']);
            $items->setQty($value['discount']);
            $items->save();
        }
        $formulated_data = formulateData($newXML, $dirname);
        $formulated_data['id'] = $po_id;
        //print_r($formulated_data);
        return $formulated_data;
    }
}
示例#2
0
function processFile($filename)
{
    //extract the filename to get the exact filename on the folder
    $newFile = substr($filename, 3);
    $dirname = substr($filename, 0, 2);
    $fs = new Filesystem();
    if ($fs->exists('../Repo/' . $dirname . '/' . $newFile)) {
        $xml = simplexml_load_file('../Repo/' . $dirname . '/' . $newFile, null, LIBXML_NOCDATA);
        $newXML = json_decode(json_encode($xml), true);
        $data = formulateData($newXML, $dirname);
        //checks if the record is already processed before
        $hasRecord = PurchaseOrderQuery::create()->filterByNumber($data['number'])->find();
        if ($hasRecord->count() === 0) {
            logMessage("No duplicate data: processFile " . date('m/d/Y h:i:s') . ".\n");
            //log something
            //insert data to db
            $po = new PurchaseOrder();
            $po->setFilename($newFile);
            $po->setStore($dirname);
            $po->setCustomerCode($data['customer_code']);
            $po->setDeliveryDate($data['delivery_date']);
            $po->setNumber($data['number']);
            $po->save();
            $po_id = $po->getId();
            //insert all items
            foreach ($data['items'] as $key => $value) {
                $items = new Item();
                $items->setPurchaseOrderId($po_id);
                $items->setUpc($value['upc']);
                $items->setQty($value['qty']);
                $items->setQty($value['discount']);
                $items->save();
            }
            $formulated_data = formulateData($newXML, $dirname);
            $formulated_data['id'] = $po_id;
            //print_r($formulated_data);
            logMessage("Return data in JSON: processFile " . date('m/d/Y h:i:s') . ".\n");
            //log something
            return $formulated_data;
            print_r($formulated_data);
        } else {
            logMessage("This file(" . $newFile . ") with store(" . $dirname . ") is already processed before: processFile " . date('m/d/Y h:i:s') . ".\n");
            //log something
        }
        print_r($data);
    } else {
        logMessage("Return no such file: processFile " . date('m/d/Y h:i:s') . ".\n");
        //log something
        return "No such file!";
    }
}
 public function quote_approved($id = null)
 {
     $this->autoRender = FALSE;
     App::import('Model', 'QuoteManager.QuoteStatus');
     $QuoteStatus = new QuoteStatus();
     App::import('Model', 'QuoteManager.Quote');
     $Quote = new Quote();
     $Q_model = new Quote();
     $quote['Quote']['id'] = $id;
     $quote['Quote']['status'] = 'Approve';
     $Q_data = $Q_model->find("first", array("conditions" => array("Quote.id" => $id)));
     if (empty($Q_data['Quote']['est_shipping'])) {
         if ($Q_data['Quote']['delivery'] == '4 - 8 Weeks Delivery') {
             $add_days = 56;
             $today = $Q_data['Quote']['quote_created_date'];
             $esd_date = date('d/m/Y', strtotime($today) + 24 * 3600 * $add_days);
         }
         if ($Q_data['Quote']['delivery'] == '5 - 10 Weeks Delivery') {
             $add_days = 70;
             $today = $Q_data['Quote']['quote_created_date'];
             $esd_date = date('d/m/Y', strtotime($today) + 24 * 3600 * $add_days);
         }
         $quote['Quote']['est_shipping'] = $esd_date;
     }
     $Quote->save($quote);
     $quote_status['QuoteStatus']['status'] = 'Approve';
     $quote_status['QuoteStatus']['quote_id'] = $id;
     $quote_info = $Quote->find("first", array("conditions" => array("Quote.id" => $id)));
     $workorder['WorkOrder']['quote_id'] = $quote_info['Quote']['id'];
     $workorder['WorkOrder']['project_id'] = $quote_info['Quote']['project_id'];
     $workorder['WorkOrder']['customer_id'] = $quote_info['Quote']['customer_id'];
     $workorder['WorkOrder']['status'] = 'New';
     $quote_number_explode = explode("-", $quote_info['Quote']['quote_number']);
     $workorder['WorkOrder']['work_order_number'] = $quote_number_explode[0];
     $workorder['WorkOrder']['skid_number'] = $quote_info['Quote']['skid_number'];
     $workorder['WorkOrder']['skid_weight'] = $quote_info['Quote']['skid_weight'];
     App::import("Model", "WorkOrderManager.WorkOrder");
     $wo = new WorkOrder();
     $wo->save($workorder);
     App::import("Model", "PurchaseOrderManager.PurchaseOrder");
     App::import("Model", "PurchaseOrderManager.PurchaseOrderItem");
     App::import("Model", "Inventory.Supplier");
     App::import('Model', 'PurchaseOrderManager.GeneralSetting');
     $supplier = array();
     foreach ($quote_info['CabinetOrderItem'] as $quote_item) {
         $item_info = $this->findQuoteItem($quote_item['item_id']);
         $supplier_required = $this->findQuoteItemDept($item_info['Item']['item_department_id']);
         if ($supplier_required['ItemDepartment']['supplier_required'] == 1) {
             $supplier[$item_info['Item']['supplier_id']][] = $item_info;
         }
     }
     $total_amount = 0;
     foreach ($supplier as $key => $value) {
         if (empty($Q_data['Quote']['est_shipping'])) {
             $est_date_quote = $quote['Quote']['est_shipping'];
         } else {
             $est_date_quote = $quote_info['Quote']['est_shipping'];
         }
         $purchaseorder = new PurchaseOrder();
         $sp_model = new Supplier();
         $sp_data = $sp_model->find("first", array("conditions" => array("Supplier.id" => $id)));
         $general_model = new GeneralSetting();
         $location_data = $general_model->find("first", array("conditions" => array("GeneralSetting.name" => 'Default')));
         $po['supplier_id'] = $key;
         $po['work_order_id'] = $wo->id;
         $po_number = explode("-", $quote_info['Quote']['quote_number']);
         $po['purchase_order_num'] = $po_number[0];
         $po['quote_id'] = $quote_info['Quote']['id'];
         $po['shipment_date'] = $est_date_quote;
         $po['payment_type'] = 'On Account';
         $po['issued_on'] = date('d/m/Y');
         $po['issued_by'] = $this->loginUser['id'];
         $po['term'] = $sp_data['Supplier']['terms'];
         $po['location_name'] = $location_data['GeneralSetting']['name'];
         $po['name_ship_to'] = $location_data['GeneralSetting']['name_address'];
         $po['address'] = $location_data['GeneralSetting']['address'];
         $po['city'] = $location_data['GeneralSetting']['city'];
         $po['province'] = $location_data['GeneralSetting']['province'];
         $po['postal_code'] = $location_data['GeneralSetting']['postal_code'];
         $po['country'] = $location_data['GeneralSetting']['country'];
         foreach ($value as $v) {
             foreach ($quote_info['CabinetOrderItem'] as $req_info) {
                 if ($req_info['item_id'] == $v['Item']['id']) {
                     $quantity = $req_info['quantity'];
                     $total_amount = $total_amount + $quantity * $v['Item']['price'];
                 }
             }
         }
         App::import("Model", "PurchaseOrderManager.GeneralSetting");
         $g_setting = new GeneralSetting();
         $gst_rate = $g_setting->find("first", array("conditions" => array("GeneralSetting.type" => 'gst')));
         $pst_rate = $g_setting->find("first", array("conditions" => array("GeneralSetting.type" => 'pst')));
         $gst_amount = $gst_rate['GeneralSetting']['value'] / 100 * $total_amount;
         $pst_amount = $pst_rate['GeneralSetting']['value'] / 100 * $total_amount;
         $total_amount = $total_amount + $gst_amount + $pst_amount;
         $po['total_amount'] = $total_amount;
         $purchaseorder->save($po);
         $index = 0;
         $purchaseorderitem = new PurchaseOrderItem();
         foreach ($value as $v) {
             foreach ($quote_info['CabinetOrderItem'] as $req_info) {
                 if ($req_info['item_id'] == $v['Item']['id']) {
                     $po_item[$index]['quantity'] = $req_info['quantity'];
                     $po_item[$index]['code'] = $req_info['code'];
                     $po_item[$index]['cabinet_id'] = $req_info['cabinet_id'];
                     $po_item[$index]['door_id'] = $req_info['door_id'];
                 }
             }
             $po_item[$index]['item_id'] = $v['Item']['id'];
             $po_item[$index]['purchase_order_id'] = $purchaseorder->id;
             $index++;
         }
         $purchaseorderitem->saveAll($po_item);
     }
     //		foreach($quote_info['CabinetOrderItem'] as $quote_item){
     //			$purchaseorder = new PurchaseOrder();
     //			$item_info = $this->findQuoteItem($quote_item['item_id']);
     //			$supplier_required = $this->findQuoteItemDept($item_info['Item']['item_department_id']);
     //			if(!empty($supplier_required['ItemDepartment']['supplier_required'])){
     //				$supplier[$item_info['Item']['supplier_id']][] = $item_info;
     //				$po['supplier_id'] = $item_info['Item']['supplier_id'];
     //				$po['work_order_id'] = $wo->id;
     //				$po['purchase_order_num'] = $quote_info['Quote']['quote_number'];
     //				$po['quote_id'] = $quote_info['Quote']['id'];
     //				$po['shipment_date'] = date("Y-m-d");
     //				$po['expiry_date'] = date("Y-m-d");
     //				$po['cc_num'] = 'Test CC Number';
     //				$po['name_cc'] = 'Test CC Name';
     //				$po['payment_type'] = 'On Account';
     //				//$purchaseorder->save($po);
     //
     //				$index = 0;
     //				foreach($quote_info['CabinetOrderItem'] as $qitem){
     //					$purchaseorderitem = new PurchaseOrderItem();
     //					$item_info = $this->findQuoteItem($qitem['item_id']);
     //					$supplier_required = $this->findQuoteItemDept($item_info['Item']['item_department_id']);
     //					if(!empty($supplier_required['ItemDepartment']['supplier_required'])){
     //						$po_item[$index]['item_id'] = $item_info['Item']['id'];
     //						$po_item[$index]['code'] = $item_info['Item']['id']."|item";
     //						$po_item[$index]['purchase_order_id'] = $purchaseorder->id;
     //						$index++;
     //					}
     //				}
     //				//$purchaseorderitem->saveAll($po_item);
     //			}
     //		}exit;
     //exit;
     if ($QuoteStatus->save($quote_status)) {
         $this->redirect("http://{$_SERVER['SERVER_NAME']}{$this->webroot}work_order_manager/work_orders/detail/{$wo->id}");
     }
 }
示例#4
0
 $po->column_fields["carrier"] = $carrier_array[$i];
 $po->column_fields["tracking_no"] = $trkno_array[$i];
 $po->column_fields["duedate"] = $duedate_array[$i];
 $po->column_fields["bill_street"] = $street_address_array[rand(0, $street_address_count - 1)];
 $po->column_fields["bill_city"] = $city_array[rand(0, $city_array_count - 1)];
 $po->column_fields["bill_state"] = "CA";
 $po->column_fields["bill_code"] = rand(10000, 99999);
 $po->column_fields["bill_country"] = 'USA';
 $po->column_fields["ship_street"] = $account->column_fields["bill_street"];
 $po->column_fields["ship_city"] = $account->column_fields["bill_city"];
 $po->column_fields["ship_state"] = $account->column_fields["bill_state"];
 $po->column_fields["ship_code"] = $account->column_fields["bill_code"];
 $po->column_fields["ship_country"] = $account->column_fields["bill_country"];
 $po->column_fields["currency_id"] = '1';
 $po->column_fields["conversion_rate"] = '1';
 $po->save("PurchaseOrder");
 $purchaseorder_ids[] = $po->id;
 $product_key = array_rand($product_ids);
 $productid = $product_ids[$product_key];
 //set the inventory product details in request then just call the saveInventoryProductDetails function
 $_REQUEST['totalProductCount'] = 1;
 $_REQUEST['hdnProductId1'] = $productid;
 $_REQUEST['qty1'] = $qty = 1;
 $_REQUEST['listPrice1'] = $listprice = 2200;
 $_REQUEST['comment1'] = "This is test comment for product of PurchaseOrder";
 $_REQUEST['deleted1'] = 0;
 $_REQUEST['discount_type1'] = 'amount';
 $_REQUEST['discount_amount1'] = $discount_amount = '200';
 $_REQUEST['taxtype'] = $taxtype = 'individual';
 $_REQUEST['subtotal'] = $subtotal = $qty * $listprice - $discount_amount;
 $_REQUEST['discount_type_final'] = 'amount';
 /**
  * Creates a new model.
  * If creation is successful, the browser will be redirected to the 'view' page.
  */
 public function actionCreate()
 {
     $model = new PurchaseOrder();
     // Uncomment the following line if AJAX validation is needed
     // $this->performAjaxValidation($model);
     if (isset($_POST['PurchaseOrder'])) {
         $model->attributes = $_POST['PurchaseOrder'];
         if ($model->save()) {
             $this->redirect(array('view', 'id' => $model->po_number));
         }
     }
     $this->render('create', array('model' => $model));
 }
 public function actionAutoCreate($suppliers_id)
 {
     $model = new PurchaseOrder();
     $model->suppliers_id = $suppliers_id;
     $model->order_status = '1';
     //since initailly PO is in draft stage
     //$model->save();
     if ($model->save()) {
         //echo "supplier id".$model->suppliers_id;
         /*WE are passing here the purchase order id
          * $model->id is id of purchase order table
          */
         $this->redirect(array('preview', 'id' => $model->id));
     }
 }
 private function create_po($data, $work_id)
 {
     $quote_id = $data['WorkOrder']['quote_id'];
     App::uses('Quote', 'QuoteManager.Model');
     App::uses('PurchaseOrder', 'PurchaseOrderManager.Model');
     $quote = new Quote();
     $purchaseOrder = new PurchaseOrder();
     $quote->recursive = 0;
     $quoteInfo = $quote->find('all', array('conditions' => array('Quote.id' => $quote_id)));
     //set po id
     $po_id = $purchaseOrder->find('list', array('fields' => array('id')));
     $tmp_po_id = 0;
     if (count($po_id) > 0) {
         $tmp_po_id = array_pop($po_id) + 1;
     } else {
         $tmp_po_id = 1;
     }
     $all_items = $this->QuoteItem->ListQuoteItems($quote_id);
     //    debug($all_items);
     //    exit;
     $all_items = $this->QuoteItem->AdjustPOItem($all_items);
     $quantity_list = $all_items['quantity_list'];
     $price_list = $all_items['price_list'];
     $title_list = $all_items['title_list'];
     $name_list = $all_items['name_list'];
     $supplier_list = $this->QuoteItem->SupplierAndItemInfo();
     $total_cost = 0.0;
     $index1 = 0;
     $item_have = false;
     foreach ($supplier_list as $key => $supplier) {
         $po_data['PurchaseOrder'] = array();
         $po_data['PurchaseOrderItem'] = array();
         //debug($supplier);
         $index2 = 0;
         $item_total_cost = 0.0;
         foreach ($supplier['item'] as $item_key => $item) {
             if ($quantity_list && is_array($quantity_list)) {
                 if (array_key_exists($item, $quantity_list)) {
                     //debug($quantity_list[$item]);
                     $po_data['PurchaseOrderItem'][$index2]['quantity'] = $quantity_list[$item];
                     $po_data['PurchaseOrderItem'][$index2]['code'] = $item;
                     $item_total_cost += $price_list[$item] * $quantity_list[$item];
                     //debug($item);
                     //debug($quantity_list[$item]);
                     //debug($price_list[$item]);
                     //debug($item_total_cost);
                     $item_arr = explode('|', $item);
                     $item_id = $item_arr[1] == 'item' ? $item_arr[0] : 0;
                     $cabite_id = $item_arr[1] == 'cabinet' ? $item_arr[0] : 0;
                     $door_id = $item_arr[1] == 'door' || $item_arr[1] == 'drawer' || $item_arr[1] == 'wall_door' ? $item_arr[0] : 0;
                     $po_data['PurchaseOrderItem'][$index2]['item_id'] = $item_id;
                     $po_data['PurchaseOrderItem'][$index2]['cabinet_id'] = $cabite_id;
                     $po_data['PurchaseOrderItem'][$index2]['door_id'] = $door_id;
                     $index2++;
                     //set item in supplier
                     $item_have = true;
                 }
             }
         }
         if ($item_have) {
             $value = $this->QuoteItem->auto_generate_number('Purchase Order');
             $po_data['PurchaseOrder']['id'] = $tmp_po_id;
             $po_data['PurchaseOrder']['supplier_id'] = $key;
             $po_data['PurchaseOrder']['purchase_order_num'] = $value;
             $po_data['PurchaseOrder']['quote_id'] = $quote_id;
             $po_data['PurchaseOrder']['work_order_id'] = $work_id;
             $po_data['PurchaseOrder']['tax_gst'] = $supplier['gst'];
             $po_data['PurchaseOrder']['order_subtotal'] = $item_total_cost;
             $gst_val = $item_total_cost * $supplier['gst'] / 100;
             $pst_val = $item_total_cost * $supplier['pst'] / 100;
             $po_data['PurchaseOrder']['total_amount'] = $item_total_cost + $pst_val + $gst_val;
             $po_data['PurchaseOrder']['tax_pst'] = $supplier['pst'];
             $item_have = false;
             //debug($po_data);
             $purchaseOrder->save($po_data);
             //        $email = new CakeEmail();
             //        $email->config('gmail');
             //        $email->from(array('*****@*****.**' => 'Zenliving'));
             //        $email->to('*****@*****.**');
             //        $email->subject('Zenliving');
             //        $email->send('My message');
             $to = $supplier['email'];
             $subject = "Test mail";
             $message = "Hello! This is a test message.";
             $from = "*****@*****.**";
             $headers = "From:" . $from;
             mail($to, $subject, $message, $headers);
             //echo "Mail Sent.";
             $tmp_po_id++;
         }
     }
 }