whoami7 - Manager
:
/
home
/
snapify
/
public_html
/
clients
/
ami
/
controllers
/
Upload File:
files >> /home/snapify/public_html/clients/ami/controllers/shipment.php
<?php /** * */ class shipment extends controller { public $skuids; public $notfounditemids; public function csvupload(){ $validator = new FileUpload\Validator\Simple('16M', []); $pathresolver = new FileUpload\PathResolver\Simple('shipmentcsv'); $filesystem = new FileUpload\FileSystem\Simple(); $fileupload = new FileUpload\FileUpload($_FILES['csvfile'], $_SERVER); $fileupload->setPathResolver($pathresolver); $fileupload->setFileSystem($filesystem); $fileupload->addValidator($validator); list($files, $headers) = $fileupload->processAll(); $_SESSION['shipmentfilename'] = $files[0]->getfilename(); $this->m->success('Success',$this->seturl('shipment/viacsv')); } public function viacsv() { $params = []; $params['rejectids'] = []; $params['orders'] = []; if(isset($_SESSION['shipmentfilename'])){ $file = fopen('shipmentcsv/'.$_SESSION['shipmentfilename'],"r"); while(! feof($file)) { $line = (fgetcsv($file)); $order[] = $line[0]; } fclose($file); $orders = $this->model->getunshiporderbyids($order); $corretids= array_column($orders, 'order_id'); $rejectids = array_diff($order, $corretids); $params['rejectids'] = $rejectids; $params['orders'] = $orders; } $this->render('shipmentviacsv',$params); } public function peroidplaceorder() { if(isset($_SESSION['selectedorder'])){ $selectedorder = $_SESSION['selectedorder']; $responce = $this->handleplaceorder($selectedorder,true); $_SESSION['successfullorders'] = $responce['success']; $_SESSION['failedorders'] = $responce['failed']; unset($_SESSION['selectedorder']); $this->m->success('Success',$this->seturl('shipment/result')); } else{ $this->m->success('Success',$this->seturl('shipment/withinaperiod')); } } public function simulatdata(){ $uniqueis = array_count_values($this->skuids); $stimulationdata=[]; foreach ($uniqueis as $skuid => $count) { $skuid = explode('%*',$skuid); $prodeatils = $this->model->getProduct($skuid[0]); $prodeatils['count'] = $count; $prodeatils['itemid'] = $skuid[1]; $stimulationdata[]=$prodeatils; } $stimulateddata=[]; foreach ($stimulationdata as $values) { $item = $this->model->getitemName($values['itemid']); $style = $values['style']; $color = $values['color']; $stimulateddata[$style][$color]['more'] = ['item'=>$item,'SKUId'=>$values['SKUId'],'Description'=>$values['Description'],'vendor'=>$values['vendor'],'text'=>$values['text']]; $stimulateddata[$style][$color]['size'][] = ['size'=>$values['size'],'qty'=>$values['qty'],'count'=>$values['count']]; } $restimulated = []; foreach ($stimulateddata as $style => $value) { foreach ($value as $color => $row) { $restimulated[]=['item'=>$row['more']['item'],'style'=>$style,'color'=>$color,'vendor'=> $row['more']['vendor'],'Description'=> $row['more']['Description'],'text'=> $row['more']['text'],'size'=>$row['size']]; } } foreach ($this->notfounditemids as $key => $value) { $item = $this->model->getitemName($key); $sizes = array_count_values($value); $size = []; foreach ($sizes as $key => $each) { $size[]=['size'=>$key,'qty'=>0,'count'=>$each]; } $restimulated[]=['item'=>$item,'style'=>'','color'=>'','vendor'=>'','Description'=>'','text'=>'','size'=>$size]; } return $restimulated; } public function verifywithinaperiod() { if(isset($_POST['selectedorder'])){ $_SESSION['selectedorder'] = $_POST['selectedorder']; $params['orders'] = $this->handleplaceorder($_POST['selectedorder'],false); $params['stimulateddata']=$this->simulatdata(); $this->render('confirmShipment',$params); } } public function verifyviacsv() { if(isset($_POST['selectedorder'])){ $_SESSION['selectedorder'] = $_POST['selectedorder']; unset($_SESSION['shipmentfilename']); $params['orders'] = $this->handleplaceorder($_POST['selectedorder'],false); $params['stimulateddata']=$this->simulatdata(); $this->render('confirmShipment',$params); } else{ $this->m->success('Success',$this->seturl('shipment/viacsv')); } } public function handleplaceorder($selectedorder,$approved) { $success = []; $failed = []; $selectedorders = $this->model->getorderbyids($selectedorder); $sortedpackages = $this->model->getsortedPackages(); $sortedstyle = $this->model->getsortedStyle(); $sortedtenure = $this->model->getsortedTenure(); $packagearray = []; foreach ($sortedpackages as $key1 => $value1) { $package = $this->model->getPackageFrom_MP($value1['id']); if($package){ foreach ($sortedstyle as $key2 => $value2) { $style = $this->model->getstyleFrom_MP($value1['id'],$value2['id']); if($style){ foreach ($sortedtenure as $key3 => $value3) { $tenure = $this->model->gettenureFrom_MP($value1['id'],$value2['id'],$value3['id']); if($tenure){ $packagearray[] = ['package'=>$package,'style'=>$style,'tenure'=>$tenure,'packageid'=>$value1['id'],'styleid'=>$value2['id'],'tenureid'=>$value3['id']]; } }}}}} $responceorder = []; foreach ($packagearray as $key => $value) { foreach ($selectedorders as $key => $order) { $value['style'] = ($value['style'] == 'No Style' ? '' : $value['style']); if($value['package'] == $order['package_name'] && $value['style'] == $order['style_name'] ){ if($this->conditionCheck($value['tenure'],$order['tenure'])) { $responce = $this->processShipment($order['order_id'],$approved,$value); if($approved){ if($responce){ $success[] = $order['order_id']; } else{ $failed[] = $order['order_id']; } } else{ if($responce){ $responceorder[] = $responce; } } } else{ } } } } if($approved){ return ['success'=>$success,'failed'=>$failed]; } else{ return $responceorder; } } public function processShipment($orderid,$approved,$value){ $error = false; $errorshow = false; $constants = $this->model->getshipmentConstants(); $item = $this->model->getfullorderbyid($orderid); $orderdetails= $this->model->getorderbyid($item['order_number']); //$package_name = $orderdetails['package_name']; //$stylename = ($orderdetails['style_name']=='' ? 'No Style' : $orderdetails['style_name']); //$orderitems = $this->model->getorderitem($item['number']); // $tenure = $item['note']; // $tenuresplit = preg_split("/[\s,]+/", $tenure); // // $tenureid= $tenuresplit[1]; // $packageid = $this->model->getPackageid($package_name); // $styleid = $this->model->getStyleid($stylename); // $tenureid= $value['tenureid']; $packageid = $value['packageid']; $styleid = $value['styleid']; $curmonth = date('m'); $curyear = date('Y'); /*echo '<pre>'; var_dump($curmonth); var_dump($curyear); var_dump($packageid); var_dump($styleid); var_dump($tenureid);*/ $list = $this->model->getItemsFromMonthlyPlan($curmonth,$curyear,$packageid,$styleid,$tenureid); $itemarray = []; foreach ($list as $key => $value) { $itemid = $value['item']; $optionvalue = $value['optionvalue']; $itemdetails = $this->model->getItemApiname($itemid); if($itemdetails['dontcheck'] == '1'){ $size = $itemdetails['default_size']; } else{ $size = $this->model->getItemProperty($itemdetails['shopify_item_name'],$item['order_number']); } $skuid = $this->model->getskuid($size,$value['product_style'],$value['product_color']); $ats = $skuid['qty']-$skuid['ship_qty']; if($skuid['SKUId']){ $itemarray[$itemid][$optionvalue] = ["SKUId"=>$skuid['SKUId'],"ats"=>$ats,'size'=>$size]; } else{ $this->notfounditemids[$itemid][] =$size; $errorshow = true; if($approved){ $error = true; } } } // var_dump($error); // var_dump($itemarray); // die(); if(!$error){ $ShipmentLines = []; $i=0; foreach ($itemarray as $itemid => $option) { $found = false; foreach ($option as $key2 => $value) { $size = $value['size']; if($value['ats']>0){ $i++; $found = true; $this->skuids[] = $value["SKUId"].'%*'.$itemid; $ShipmentLines[] = [ "ShipmentId"=>$item['order_number'].'SP4',// "SKUId"=> $value["SKUId"],// "UnitOfMeasure"=> "EA",// //"Price"=> "42.5", "QtyOrdered"=> 1, "QtyRequired"=> 1, "SOLineId"=> $i ]; break; } } if(!$found){ $this->notfounditemids[$itemid][] = $size; } else{ } } if($item['code']){ $Shipmentmethod = $this->model->getShipmentmethod($item['code']); if(!$Shipmentmethod ){ $Shipmentmethod = ''; } } else{ $Shipmentmethod = $this->model->getnullShipmentmethod(); } if(count($ShipmentLines)!=count($itemarray)){ $errorshow =true; } $Route = $this->model->getRoute(); $Route++; $refcodeline=array_column($ShipmentLines, 'SKUId'); $order = [ "error"=> $errorshow,//db "ShipmentId"=> $item['order_number'].$constants['BizId'],//db "BizId"=> $constants['BizId'],//Constant "OrderType"=> $constants['OrderType'],//Constant "OrderClass"=> $constants['OrderClass'],//Constant "ShippingAddressId"=> $constants['ShippingAddressId'],//Constant "CustomerId"=> $item['customer'],//db "CustomerName"=> $item['sa_name'],//db "DateDueOut"=> date('Y-m-d').'T'.date('H:i:s'),//current date time //"CustomerRef"=> $item['order_number'].'SPAR4', // before $item['customer'], but the length is more for display "CustomerRef"=> $this->model->getRefcode($refcodeline,$packageid), // before $item['customer'], but the length is more for display "OwnerId"=> $constants['OwnerId'],//Constant "ShippingLane"=> $constants['ShippingLane'],//Constant "Lines"=>count($ShipmentLines), "LineQty"=> count($ShipmentLines), "DateShipment"=> date('Y-m-d').'T'.date('H:i:s'),//current date time "PriorityDespatch"=> $constants['PriorityDespatch'],//Constant "PriorityAllocation"=> $constants['PriorityAllocation'],//Constant "POD"=>$orderdetails['style_name'], "Region"=>$orderdetails['package_name'], "Route"=>$Route, "ShipmentLines"=> $ShipmentLines, "ShippingMethod"=> $Shipmentmethod, "CarrierId"=> $constants['CarrierId'], //constant "ShipAddress"=> [ [ "Table"=> "SHH",// "ShipmentId"=> $item['order_number'].'SP4',// "AddressId"=> "ADD1",// "Name"=> $item['sa_name'],// "Line1"=>$item['sa_address1'],// "Line2"=> $item['sa_address2'], "City"=> $item['sa_city'], "State"=> $item['sa_province_code'], "Postcode"=> $item['sa_zip'],// "Country"=> $item['sa_country_code']// ] ] ]; if($approved){ if(count($ShipmentLines)==count($itemarray)){ $status = $this->snapPost('shipments',$order); if($status == '201'){ $this->model->setRoute($Route); $successfullskuids = array_column($ShipmentLines, 'SKUId'); $this->model->updateshipped($item['order_number']); $this->model->updateProductshipped($successfullskuids); return true; } } } else{ return $order; } } return false; } public function conditionCheck($condition,$value) { if(preg_match('/\d-\d/', $condition, $matches, PREG_OFFSET_CAPTURE)){ $variable = explode('-', $condition); if(($variable[0] <= $value) && ($variable[1] >= $value)) { return true; } else{ return false; } } elseif(preg_match('/\d>/', $condition, $matches, PREG_OFFSET_CAPTURE)){ $variable = rtrim($condition, ">"); if($variable >= $value) { return true; } else{ return false; } } elseif(preg_match('/\d</', $condition, $matches, PREG_OFFSET_CAPTURE)){ $variable = rtrim($condition, "<"); if($variable <= $value) { return true; } else{ return false; } } else{ return false; } } public function result() { $params['success'] = $_SESSION['successfullorders'] ; $params['failed'] = $_SESSION['failedorders'] ; $this->render('shipmentsesult',$params); } public function errorcorrection() { $params =[]; $params['showorders'] =false; $this->render('errorcorrection',$params); } public function handleerrorcorrection() { $params['showorders'] =true; $params['orderid'] =$_POST['orderid']; $params['order'] =$this->model->getWholeOrder($_POST['orderid']); $this->render('errorcorrection',$params); } public function savecorrection() { $params =[]; $this->render('errorcorrection',$params); } public function settings() { $params['settings'] = $this->model->getshipmentConstants(); $this->render('shipmentsettings',$params); } public function savesettings() { if(isset($_POST['sendemail'])){ $_POST['sendemail'] = '1'; } else{ $_POST['sendemail'] = '0'; } $params = $this->model->saveshipmentConstants($_POST); $this->m->success('Success',$this->seturl('shipment/settings')); } }
Copyright ©2021 || Defacer Indonesia