PageRenderTime 81ms CodeModel.GetById 28ms RepoModel.GetById 1ms app.codeStats 0ms

/magehelp/application/controllers/invoice.php

https://bitbucket.org/jit_bec/shopifine
PHP | 442 lines | 311 code | 90 blank | 41 comment | 26 complexity | f7e15e470306ee8c3ca7356aa48e958f MD5 | raw file
Possible License(s): LGPL-3.0
  1. <?php
  2. require_once ("secure_area.php");
  3. class Invoice extends Secure_area
  4. {
  5. private $user;
  6. private $username;
  7. function __construct()
  8. {
  9. parent::__construct('invoice');
  10. $this->load->model('Invoice_master');
  11. $this->load->model('Invoice_item');
  12. $this->load->model('Delivery_vehicle');
  13. $this->load->model('Delivery_point');
  14. $this->load->model('Shipment_master');
  15. $this->load->model('acl/User','Userview');
  16. $this->user= $this->Userview->get_logged_in_employee_info();
  17. $this->username = $this->user->last_name." ".$this->user->first_name;
  18. $param = array('user' => $this->user->username);
  19. $this->load->library('acl-library/Acl',$param,'Acl');
  20. }
  21. function index()
  22. {
  23. $users = $this->Userview->getAllUsersByRole(null,array('field_name'=>'role_name',array('Everyone','Guest')));
  24. foreach($users as $user) {
  25. $user_id=$user["person_id"];
  26. $username=$user["username"];
  27. //$value = $denom["denom_json"];
  28. if (!empty($user_id)){
  29. $userOptions.="<OPTION VALUE=\"$user_id\">".$username;
  30. }
  31. }
  32. $data['userOptions'] = $userOptions;
  33. $this->load->view("invoice/invoice_list");
  34. }
  35. // function assignEntityToUser(){
  36. // $ids = $_REQUEST['ids'];
  37. // $entity = $_REQUEST['entity'];
  38. // $role = $_REQUEST['role'];
  39. // $user_id = $_REQUEST['user_id'];
  40. // if ($entity=='incoming_invoice'){
  41. // $model = 'Invoice_master';
  42. // }
  43. //
  44. // if (!empty($ids) && !empty($role) ){
  45. // if (empty($user_id)){
  46. // $user_id = $this->user->person_id;
  47. // }
  48. //
  49. // else if ($role =='owner'){
  50. // $upd_data['owner_id'] = $user_id;
  51. // }
  52. // foreach($ids as $id){
  53. //
  54. // $this->$model->update(array('id'=>$id),$upd_data);
  55. // }
  56. // }
  57. // }
  58. function packInvoice(){
  59. $id = $_REQUEST['id'];
  60. $data['invoice_id']= $id;
  61. $inv_data = array
  62. (
  63. 'owner_id'=>$this->user->person_id,
  64. 'last_updated_by'=>$this->user->person_id,
  65. );
  66. $where_clause_array= array('magento_invoice_entity_id'=>$id);
  67. $this->Invoice_master->update($where_clause_array,$inv_data);
  68. $this->load->view("invoice/pack_invoice",$data);
  69. }
  70. function populateInvoiceItems(){
  71. $invoiceid = $_REQUEST['invoiceId'];
  72. $page = $_REQUEST['page'];
  73. $limit = $_REQUEST['rows'];
  74. $sidx = $_REQUEST['sidx'];
  75. $sord = $_REQUEST['sord'];
  76. $whereClause = array();
  77. if (!empty($invoiceid)){
  78. $whereClause['magento_invoice_entity_id'] = $invoiceid;
  79. }
  80. $whereClause['type'] = 'simple';
  81. //standard response parameters
  82. $mfrsdata = array();
  83. $count = $this->Invoice_item->totalNoOfRows($whereClause);
  84. if( $count > 0 && $limit > 0) {
  85. $total_pages = ceil($count/$limit);
  86. } else {
  87. $total_pages = 0;
  88. }
  89. if ($page > $total_pages) $page=$total_pages;
  90. $start = $limit*$page - $limit;
  91. // if for some reasons start position is negative set it to 0
  92. // typical case is that the user type 0 for the requested page
  93. if($start <0) $start = 0;
  94. $clauses = array('orderBy'=>$sidx,'orderDir'=>$sord,'startLimit'=>$start,'limit'=>$limit);
  95. $data['total'] = $total_pages;
  96. $data['page'] = $page;
  97. $data['records'] = $count;
  98. $mfrs = $this->Invoice_item->getAll(false,$whereClause,$clauses);
  99. foreach ($mfrs as $dp){
  100. array_push($mfrsdata, array('id'=> $dp['magento_entity_id'],'dprow' => array($dp['sku'],$dp['name'],$dp['invoiced_number'],$dp['packed_number'])));
  101. }
  102. $data['invoicedata'] = $mfrsdata;
  103. echo json_encode($data);
  104. }
  105. function completePacking(){
  106. //
  107. $invoiceId = $_POST['invoiceId'];
  108. $isMatched = $_POST['isMatched'];
  109. $comments = $_POST['comments'];
  110. $jsonItems = $_POST['packedJson'];
  111. $items = json_decode($jsonItems,true);
  112. $inv_data = array
  113. (
  114. 'status'=>'packed',
  115. 'comments'=>$comments,
  116. 'matched'=>$isMatched,
  117. 'last_updated_by'=>$this->user->person_id,
  118. 'packed_by'=>$this->user->person_id,
  119. );
  120. $where_clause_array= array('magento_invoice_entity_id'=>$invoiceId);
  121. $this->Invoice_master->update($where_clause_array,$inv_data);
  122. $this->Invoice_item->updateMultipleByEntityId($items);
  123. //$data['invoiceListSession'] =$_SESSION['invoiceList'];
  124. $this->load->view("invoice/invoice_list");
  125. }
  126. function ship(){
  127. $ids = $_REQUEST['ids'];
  128. $batch_array =array();
  129. foreach ($ids as $id){
  130. array_push($batch_array,array('id'=>$id,'status'=>self::READYFORSHIPPING,'shipped_by'=>$this->user->person_id));
  131. }
  132. $this->Invoice_master->update_batch($batch_array,'id');
  133. echo 'success';
  134. }
  135. function loadShipment(){
  136. $deliveryPoints = $this->Delivery_point->getAll();
  137. $deliveryVehicles = $this->Delivery_vehicle->getAll();
  138. $options="";
  139. $optionsVehicle = "";
  140. foreach($deliveryPoints as $deliveryPoint) {
  141. $id=$deliveryPoint["id"];
  142. $thing=$deliveryPoint["name"];
  143. $options.="<OPTION VALUE=\"$thing\">".$thing;
  144. }
  145. foreach($deliveryVehicles as $deliveryVehicle) {
  146. $id=$deliveryVehicle["id"];
  147. $reg=$deliveryVehicle["reg_number"];
  148. $optionsVehicle.="<OPTION VALUE=\"$reg\">".$reg;
  149. }
  150. $data['options']=$options;
  151. $data['optionsVehicle']=$optionsVehicle;
  152. $this->load->view("invoice/shipment",$data);
  153. }
  154. function confirmation(){
  155. $deliveryPoint = $_POST['deliveryPointDD'];
  156. $deliveryVehicle= $_POST['deliveryVehicleDD'];
  157. $invoiceIDsJSON = $_POST['selectedInv'];
  158. $shippingArray = json_decode($invoiceIDsJSON,true);
  159. $this->db->trans_start();
  160. $trackingNumber = $this->_createTrackingNumber($deliveryVehicle, $deliveryPoint);
  161. $shipping_data = array
  162. (
  163. 'tracking_number'=>$trackingNumber,
  164. 'delivery_vehicle'=>$deliveryVehicle,
  165. 'delivery_point'=>$deliveryPoint
  166. );
  167. $this->Shipment_master->insert($shipping_data);
  168. foreach ($shippingArray as $shipping){
  169. $invoice_data_shipping = array(
  170. 'status' => 'shipped',
  171. 'shipping_tracking_number' => $trackingNumber
  172. );
  173. $where_clause = array('magento_invoice_entity_id' =>$shipping);
  174. $this->Invoice_master->update($where_clause, $invoice_data_shipping);
  175. }
  176. $this->db->trans_complete();
  177. if ($this->db->trans_status() === FALSE)
  178. {
  179. //echo $this->db->_error_message();
  180. die( 'Shipping Failed.Please check log ');
  181. }
  182. else {
  183. $success = true;
  184. }
  185. $to = "abhijit.mazumder@gmail.com";
  186. if ($success){
  187. $subject = "Shipping Confirmattion Mail For $trackingNumber";
  188. $message = "Shipping Confirmed For ";
  189. foreach ($shippingArray as $shipping){
  190. $message = $message."Invoice Number ".$shipping['invoice_id'];
  191. }
  192. $message = $message."Delivery Vehicle Number ".$deliveryVehicle."Delivery Point ".$deliveryPoint;
  193. }
  194. else {
  195. $subject = "Shipping Faliure Mail For $trackingNumber";
  196. $message = "Shipping Failed For ";
  197. foreach ($shippingArray as $shipping){
  198. $message = $message."Invoice Number ".$shipping['invoice_id'];
  199. }
  200. }
  201. $from = "shopifine@localshopifine.com";
  202. $headers = "From:" . $from;
  203. mail($to,$subject,$message,$headers);
  204. //$data['shippingArray'] = $shippingArray;
  205. $data['trackingNumber'] = $trackingNumber;
  206. $this->load->view('invoice/confirmation',$data);
  207. //TODO: if everything fine unset the invoice List in session
  208. }
  209. function _createTrackingNumber($reg_number,$delivery_point){
  210. $offset = 100000;
  211. $lastId = $this->Shipment_master->last_insert_id();
  212. $trackingNumber = $offset + $lastId + 1;
  213. $vehicleId = $this->Delivery_vehicle->getId($reg_number);
  214. $trackingNumber = $trackingNumber.'00' + $vehicleId ;
  215. $pointId = $this->Delivery_point->getId($delivery_point);
  216. $trackingNumber = $trackingNumber.'00' + $pointId;
  217. return $trackingNumber;
  218. }
  219. function populateInvoices(){
  220. $where =array();
  221. $in_where =array();
  222. $invoicedata = array();
  223. setOwnerStatusCommon($where,$in_where);
  224. $griddata= populateGridCommon('Invoice_master',$where,null,$in_where);
  225. $dbrows = $griddata['db_data'];
  226. $data = $griddata['grid_metadata'];
  227. foreach ($dbrows as $dp){
  228. array_push($invoicedata, array('id'=> $dp['magento_invoice_entity_id'],'dprow' => array($dp['magento_invoice_increment_id'],$dp['status'],$dp['magento_order_increment_id'],$dp['comments'],$dp['owner_name'],'pack',$dp['owner_id'])));
  229. }
  230. $data['invoicedata'] = $invoicedata;
  231. echo json_encode($data);
  232. }
  233. function populatePackedInvoicesByUser(){
  234. $page = $_REQUEST['page'];
  235. $limit = $_REQUEST['rows'];
  236. $sidx = $_REQUEST['sidx'];
  237. $sord = $_REQUEST['sord'];
  238. $where = array('status'=>'packed');
  239. $where['owner_id'] = $this->user->person_id;
  240. //standard response parameters
  241. $mfrsdata = array();
  242. $count = $this->Invoice_master->totalNoOfRows($where);
  243. if( $count > 0 && $limit > 0) {
  244. $total_pages = ceil($count/$limit);
  245. } else {
  246. $total_pages = 0;
  247. }
  248. if ($page > $total_pages) $page=$total_pages;
  249. $start = $limit*$page - $limit;
  250. // if for some reasons start position is negative set it to 0
  251. // typical case is that the user type 0 for the requested page
  252. if($start <0) $start = 0;
  253. $clauses = array('orderBy'=>$sidx,'orderDir'=>$sord,'startLimit'=>$start,'limit'=>$limit);
  254. $data['total'] = $total_pages;
  255. $data['page'] = $page;
  256. $data['records'] = $count;
  257. $mfrs = $this->Invoice_master->getAll(false,$where);
  258. foreach ($mfrs as $dp){
  259. array_push($mfrsdata, array('id'=> $dp['magento_invoice_entity_id'],'dprow' => array($dp['magento_invoice_increment_id'],$dp['status'],$dp['magento_order_increment_id'],$dp['comments'])));
  260. }
  261. $data['invoicedata'] = $mfrsdata;
  262. echo json_encode($data);
  263. }
  264. function populateShipmentReadyInvoices(){
  265. $page = $_REQUEST['page'];
  266. $limit = $_REQUEST['rows'];
  267. $sidx = $_REQUEST['sidx'];
  268. $sord = $_REQUEST['sord'];
  269. $where = array('status'=>'readyforshipping');
  270. $where['owner_id'] = $this->user->person_id;
  271. //standard response parameters
  272. $mfrsdata = array();
  273. $count = $this->Invoice_master->totalNoOfRows($where);
  274. if( $count > 0 && $limit > 0) {
  275. $total_pages = ceil($count/$limit);
  276. } else {
  277. $total_pages = 0;
  278. }
  279. if ($page > $total_pages) $page=$total_pages;
  280. $start = $limit*$page - $limit;
  281. // if for some reasons start position is negative set it to 0
  282. // typical case is that the user type 0 for the requested page
  283. if($start <0) $start = 0;
  284. $clauses = array('orderBy'=>$sidx,'orderDir'=>$sord,'startLimit'=>$start,'limit'=>$limit);
  285. $data['total'] = $total_pages;
  286. $data['page'] = $page;
  287. $data['records'] = $count;
  288. $mfrs = $this->Invoice_master->getAll(false,$where);
  289. foreach ($mfrs as $dp){
  290. array_push($mfrsdata, array('id'=> $dp['magento_invoice_entity_id'],'dprow' => array($dp['magento_invoice_increment_id'],$dp['status'],$dp['magento_order_increment_id'],$dp['comments'])));
  291. }
  292. $data['invoicedata'] = $mfrsdata;
  293. echo json_encode($data);
  294. }
  295. function populateShippedInvoices(){
  296. $page = $_REQUEST['page'];
  297. $limit = $_REQUEST['rows'];
  298. $sidx = $_REQUEST['sidx'];
  299. $sord = $_REQUEST['sord'];
  300. $where = array('status'=>'shipped');
  301. $where['owner_id'] = $this->user->person_id;
  302. $where['shipping_tracking_number']= $_REQUEST['trackingNumber'];
  303. //standard response parameters
  304. $mfrsdata = array();
  305. $count = $this->Invoice_master->totalNoOfRows($where);
  306. if( $count > 0 && $limit > 0) {
  307. $total_pages = ceil($count/$limit);
  308. } else {
  309. $total_pages = 0;
  310. }
  311. if ($page > $total_pages) $page=$total_pages;
  312. $start = $limit*$page - $limit;
  313. // if for some reasons start position is negative set it to 0
  314. // typical case is that the user type 0 for the requested page
  315. if($start <0) $start = 0;
  316. $clauses = array('orderBy'=>$sidx,'orderDir'=>$sord,'startLimit'=>$start,'limit'=>$limit);
  317. $data['total'] = $total_pages;
  318. $data['page'] = $page;
  319. $data['records'] = $count;
  320. $mfrs = $this->Invoice_master->getAll(false,$where);
  321. foreach ($mfrs as $dp){
  322. array_push($mfrsdata, array('id'=> $dp['magento_invoice_entity_id'],'dprow' => array($dp['magento_invoice_increment_id'],$dp['status'],$dp['magento_order_increment_id'],$dp['comments'])));
  323. }
  324. $data['invoicedata'] = $mfrsdata;
  325. echo json_encode($data);
  326. }
  327. function assign(){
  328. $inv_id_array = json_decode($_REQUEST['selInv']);
  329. foreach($inv_id_array as $id){
  330. $inv_data = array
  331. (
  332. 'owner_id'=>$_REQUEST['userId'],
  333. 'last_updated_by'=>$this->user->person_id,
  334. );
  335. $where_clause_array= array('magento_invoice_entity_id'=>$id);
  336. $this->Invoice_master->update($where_clause_array,$inv_data);
  337. }
  338. }
  339. function acquire(){
  340. $inv_id_array = json_decode($_REQUEST['selInv']);
  341. foreach($inv_id_array as $id){
  342. $inv_data = array
  343. (
  344. 'owner_id'=>$this->user->person_id,
  345. 'last_updated_by'=>$this->user->person_id,
  346. );
  347. $where_clause_array= array('magento_invoice_entity_id'=>$id);
  348. $this->Invoice_master->update($where_clause_array,$inv_data);
  349. }
  350. }
  351. }
  352. ?>