PageRenderTime 55ms CodeModel.GetById 26ms RepoModel.GetById 0ms app.codeStats 0ms

/admin/ItemsLow/ItemLowClass.php

https://github.com/dkirsche/ItemsLow
PHP | 283 lines | 227 code | 31 blank | 25 comment | 17 complexity | 629439cf3da7a60807a34e3d786182d3 MD5 | raw file
  1. <?php
  2. class ItemRunningLow{
  3. public $id,$productID,$createdBy,$createdByName,$createdDate,$active,$producer,$productname,$originalID;
  4. public $orderStatus; //1 - discontinued,2 - on order
  5. public $orderNotes, $orderedByName, $orderedDate;
  6. private $casesRemain,$bottlesRemain;
  7. private $status; //1 - running low
  8. //2 - out of stock
  9. //PROPERTY METHODS
  10. //the only way to set the bottles and cases remaining is in this method when status=1.
  11. public function set_status($status,$cases=0,$bottles=0){
  12. //only allow either 0, 1 or 2 for status
  13. if($status<0 || $status>2)
  14. return 0;
  15. $this->status=$status;
  16. //only allow cases and bottles to be set if status=1 (running low).
  17. if($this->status==1){
  18. $this->casesRemain=$cases;
  19. $this->bottlesRemain=$bottles;
  20. }
  21. return 1;
  22. }
  23. public function get_status(){
  24. return $this->status;
  25. }
  26. public function get_casesRemain(){
  27. return $this->casesRemain;
  28. }
  29. public function get_bottlesRemain(){
  30. return $this->bottlesRemain;
  31. }
  32. //END PROPERTIES
  33. //Consturctor used to initialize all variables.
  34. public function ItemRunningLow(){
  35. $this->id=0;
  36. $this->productID=0;
  37. $this->createdBy=0;
  38. $this->createdByName='';
  39. $this->createdDate='1/1/2000';
  40. $this->active=0;
  41. $this->casesRemain=0;
  42. $this->bottlesRemain=0;
  43. $this->status=0;
  44. $this->originalID=0;
  45. $this->orderStatus=0;
  46. $this->orderNotes="";
  47. $this->orderedDate='1/1/2001';
  48. $this->orderedByName="";
  49. }
  50. public function Load($id){
  51. $query = "select itemslow.id,itemslow.productid,createdby,users.login as createdname,itemslow.createdDate,itemslow.active, casesremain,bottlesremain,itemslow.status, itemslow.originalID,wines.producer,wines.productname,
  52. itemslow_orderstatus.status orderStatus, itemslow_orderstatus.notes orderNotes,itemslow_orderstatus.createdDate orderedDate,os.login as osByName
  53. FROM itemslow
  54. join users on itemslow.createdby=users.id
  55. join wines on itemslow.productid=wines.productid
  56. left join itemslow_orderstatus on itemslow_orderstatus.originalId=itemslow.originalID
  57. left join users os on os.id=itemslow_orderstatus.UserID
  58. WHERE itemslow.id={$id}";
  59. $result = mssql_query($query);
  60. if($row=mssql_fetch_array($result)){
  61. $this->id=$row["id"];
  62. $this->productID=$row["productid"];
  63. $this->createdBy=$row["createdby"];
  64. $this->createdByName=$row["createdname"];
  65. $this->createdDate=$row["createdDate"];
  66. $this->active=$row["active"];
  67. $this->casesRemain=$row["casesremain"];
  68. $this->bottlesRemain=$row["bottlesremain"];
  69. $this->status=$row["status"];
  70. $this->producer=$row["producer"];
  71. $this->productname=$row["productname"];
  72. $this->originalID=$row["originalID"];
  73. //------orderstatus----
  74. $this->orderStatus = empty($row["orderStatus"])?0:$row["orderStatus"];
  75. $this->orderNotes = $row["orderNotes"];
  76. $this->orderedByName = $row["osByName"];
  77. $this->orderedDate = $row["orderedDate"];
  78. //------orderstatus----
  79. return 1;
  80. }
  81. return 0;
  82. }
  83. public function LoadAll($sortby='',$order='desc', $view='active'){
  84. $itemslowArr=array();
  85. $query = "select itemslow.id,itemslow.productid,createdby,users.login as createdname,itemslow.createdDate,itemslow.active, casesremain,bottlesremain,itemslow.status,itemslow.originalID,wines.producer,wines.productname,
  86. itemslow_orderstatus.id orderStatusId, itemslow_orderstatus.status orderStatus, itemslow_orderstatus.notes orderNotes,itemslow_orderstatus.createdDate orderedDate, os.login as osByName
  87. from itemslow
  88. join users on itemslow.createdby=users.id
  89. join wines on itemslow.productid=wines.productid
  90. left join itemslow_orderstatus on itemslow_orderstatus.originalId=itemslow.originalID
  91. left join users os on os.id=itemslow_orderstatus.UserID";
  92. if($view == 'active' || $view == '')
  93. $query.= ' where active=1 ';
  94. switch ($sortby){
  95. case 'wine':
  96. $query.= " order by wines.producer {$order}, wines.productname asc";
  97. break;
  98. case 'status':
  99. $query.= " order by itemslow.status ".$order;
  100. break;
  101. case 'added':
  102. $query.= " order by itemslow.createdDate ".$order;
  103. break;
  104. case 'orderStatus':
  105. $query.= " order by itemslow_orderstatus.status ".$order;
  106. break;
  107. default:
  108. $query.= " order by itemslow.createdDate ASC";
  109. }
  110. $result = mssql_query($query);
  111. while($row=mssql_fetch_array($result)){
  112. $SS = new ItemRunningLow;
  113. $SS->id=$row["id"];
  114. $SS->productid=$row["productid"];
  115. $SS->createdby=$row["createdby"];
  116. $SS->createdname=$row["createdname"];
  117. $SS->createdDate=$row["createdDate"];
  118. $SS->active=$row["active"];
  119. $SS->casesRemain=$row["casesremain"];
  120. $SS->bottlesRemain=$row["bottlesremain"];
  121. $SS->status=$row["status"];
  122. $SS->producer=$row["producer"];
  123. $SS->productname=$row["productname"];
  124. $SS->originalID=$row["originalID"];
  125. //------orderstatus----
  126. $SS->orderStatus = empty($row["orderStatus"])?0:$row["orderStatus"];
  127. $SS->orderNotes = $row["orderNotes"];
  128. $SS->orderedByName = $row["osByName"];
  129. $SS->orderedDate = $row["orderedDate"];
  130. //------orderstatus----
  131. $itemslowArr[]=$SS;
  132. }
  133. return $itemslowArr;
  134. }
  135. public function LoadByOriginalID($originalID){
  136. // function to get all items of same orignalId
  137. $sameOriginalIDArr=array();
  138. $query = "select itemslow.id,itemslow.productid,createdby,users.login as createdname,itemslow.createdDate,itemslow.active, casesremain,bottlesremain,itemslow.status,itemslow.originalID,wines.producer,wines.productname,
  139. itemslow_orderstatus.id orderStatusId, itemslow_orderstatus.status orderStatus, itemslow_orderstatus.notes orderNotes,itemslow_orderstatus.createdDate orderedDate, os.login as osByName
  140. from itemslow
  141. join users on itemslow.createdby=users.id
  142. join wines on itemslow.productid=wines.productid
  143. left join itemslow_orderstatus on itemslow_orderstatus.originalId=itemslow.originalID
  144. left join users os on os.id=itemslow_orderstatus.UserID
  145. where itemslow.originalID=".$originalID." order by itemslow.id";
  146. $result = mssql_query($query);
  147. while($row=mssql_fetch_array($result)){
  148. $SS = new ItemRunningLow;
  149. $SS->id=$row["id"];
  150. $SS->productid=$row["productid"];
  151. $SS->createdby=$row["createdby"];
  152. $SS->createdname=$row["createdname"];
  153. $SS->createdDate=$row["createdDate"];
  154. $SS->active=$row["active"];
  155. $SS->casesRemain=$row["casesremain"];
  156. $SS->bottlesRemain=$row["bottlesremain"];
  157. $SS->status=$row["status"];
  158. $SS->producer=$row["producer"];
  159. $SS->productname=$row["productname"];
  160. $SS->originalID=$row["originalID"];
  161. //------orderstatus----
  162. $SS->orderStatus = empty($row["orderStatus"])?0:$row["orderStatus"];
  163. $SS->orderNotes = $row["orderNotes"];
  164. $SS->orderedByName = $row["osByName"];
  165. $SS->orderedDate = $row["orderedDate"];
  166. //------orderstatus----
  167. $itemslowArr[]=$SS;
  168. }
  169. return $itemslowArr;
  170. }
  171. public function Save(){
  172. if(!$this->Validate()) return 0;
  173. //----condition for remove and insert new items---
  174. $query = "update itemslow set active='0' where productid='".$this->productID."'";
  175. mssql_query($query);
  176. $query = "insert into itemslow (productid,createdby, active, casesRemain, bottlesRemain, status, originalID)
  177. VALUES({$this->productID},{$this->createdBy},{$this->active},{$this->casesRemain},{$this->bottlesRemain},{$this->status},{$this->originalID});
  178. select @@identity";
  179. //select @@identity
  180. $result = mssql_query($query);
  181. /*
  182. $id= mssql_insert_id();
  183. $query = "update itemslow set originalID ={$id} where id={$id}";
  184. mssql_query($query);
  185. */
  186. //if no records returned the the insert failed
  187. if(!($row=mssql_fetch_array($result)))
  188. return 0;
  189. $id=$row[0];//saves the new id to a variable;
  190. //if originalID=0 then it hasn't been set which means it isn't part of a larger group of itemslow. We must set the originalID=id
  191. if($this->originalID==0){
  192. $query = "update itemslow set originalID ={$id} where id={$id}";
  193. mssql_query($query);
  194. }
  195. $this->Load($id); //load the record because there are certain fields that the db filled in when inserting.
  196. }
  197. private function Validate(){
  198. if($this->status==1){
  199. if($this->bottlesRemain<=0 && $this->casesRemain<=0)
  200. return 0;
  201. }
  202. if($this->productID==0)
  203. return 0;
  204. if($this->createdBy==0)
  205. return 0;
  206. return 1;
  207. }
  208. public function DateDifference(){
  209. $today=mktime(0, 0, 0, date('m'), date('d'), date('Y')); //today's unix timestamp
  210. $createdTime=strtotime($this->createdDate);//convert datecreated into unix timestamp
  211. $dateCreated=mktime(0, 0, 0, date('m',$createdTime), date('d',$createdTime), date('Y',$createdTime)); //we need to cleans the date so that time is omitted and only the date part is used to create the time stamp
  212. $days=($today-$dateCreated)/(60*60*24);
  213. $returnVal=$days==0?"Today":"{$days} days ago";
  214. return $returnVal;
  215. }
  216. public function set_orderStatus($userID){
  217. //- This method should insert the values into the table ItemsLow_OrderStatus
  218. $this->clear_orderStatus();
  219. $cleanNote=ms_escape_string($this->orderNotes);
  220. $query = "insert into itemslow_orderstatus (originalId, status, notes, userId)
  221. VALUES({$this->originalID},{$this->orderStatus},'{$cleanNote}',{$userID});
  222. ";
  223. $result = mssql_query($query);
  224. $this->Load($this->id);
  225. }
  226. public function clear_orderStatus(){
  227. //- deletes from ItemsLow_OrderStatus where OriginalID=$origID
  228. $query = "delete from itemslow_orderstatus where originalId=".$this->originalID."";
  229. $result = mssql_query($query);
  230. }
  231. public function get_producers(){
  232. $producerArr=array();
  233. $query = "select distinct producer from wines where status>=0";
  234. $result = mssql_query($query);
  235. while($row=mssql_fetch_array($result)){
  236. $producerArr[]=$row["producer"];
  237. }
  238. return $producerArr;
  239. }
  240. public function get_products($id){
  241. $productsrArr=array();
  242. $producer=ms_escape_string($id);
  243. $query = "select productid, productname,vintage from wines where producer='{$producer}' and status>-1";
  244. $result = mssql_query($query);
  245. while($row = mssql_fetch_object($result)){
  246. $productname=$row->vintage>0?$row->productname.' '.$row->vintage:$row->productname;
  247. $productsrArr[]= array("product_name" => $productname, "productid" => $row->productid);
  248. }
  249. return $productsrArr;
  250. }
  251. }
  252. ?>