1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134: 135: 136: 137: 138: 139: 140: 141: 142: 143: 144: 145: 146: 147: 148: 149: 150: 151: 152: 153: 154: 155: 156: 157: 158: 159: 160: 161: 162: 163: 164: 165: 166: 167: 168: 169: 170: 171: 172: 173: 174: 175: 176: 177: 178: 179: 180: 181: 182: 183: 184: 185: 186: 187: 188: 189: 190: 191: 192: 193: 194: 195: 196: 197: 198: 199: 200: 201: 202: 203: 204: 205: 206: 207: 208: 209: 210: 211: 212: 213: 214: 215: 216: 217: 218: 219: 220: 221: 222: 223: 224: 225: 226: 227: 228: 229: 230: 231: 232: 233: 234: 235: 236: 237: 238: 239: 240: 241: 242: 243: 244: 245: 246: 247: 248: 249: 250: 251: 252: 253: 254: 255: 256: 257: 258: 259: 260: 261: 262: 263: 264: 265: 266: 267: 268: 269: 270: 271: 272: 273: 274: 275: 276: 277: 278: 279: 280: 281: 282: 283: 284: 285: 286: 287: 288: 289: 290: 291: 292: 293: 294: 295: 296: 297: 298: 299: 300: 301: 302: 303: 304: 305: 306: 307: 308: 309: 310: 311: 312: 313: 314: 315: 316: 317: 318: 319: 320: 321: 322: 323: 324: 325: 326: 327: 328: 329: 330: 331: 332: 333: 334: 335: 336: 337: 338: 339: 340: 341: 342: 343: 344: 345: 346: 347: 348: 349:
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
class Receiving_lib
{
private $CI;
public function __construct()
{
$this->CI =& get_instance();
}
public function get_cart()
{
if(!$this->CI->session->userdata('recv_cart'))
{
$this->set_cart(array());
}
return $this->CI->session->userdata('recv_cart');
}
public function set_cart($cart_data)
{
$this->CI->session->set_userdata('recv_cart', $cart_data);
}
public function empty_cart()
{
$this->CI->session->unset_userdata('recv_cart');
}
public function get_supplier()
{
if(!$this->CI->session->userdata('recv_supplier'))
{
$this->set_supplier(-1);
}
return $this->CI->session->userdata('recv_supplier');
}
public function set_supplier($supplier_id)
{
$this->CI->session->set_userdata('recv_supplier', $supplier_id);
}
public function remove_supplier()
{
$this->CI->session->unset_userdata('recv_supplier');
}
public function get_mode()
{
if(!$this->CI->session->userdata('recv_mode'))
{
$this->set_mode('receive');
}
return $this->CI->session->userdata('recv_mode');
}
public function set_mode($mode)
{
$this->CI->session->set_userdata('recv_mode', $mode);
}
public function clear_mode()
{
$this->CI->session->unset_userdata('recv_mode');
}
public function get_stock_source()
{
if(!$this->CI->session->userdata('recv_stock_source'))
{
$this->set_stock_source($this->CI->Stock_location->get_default_location_id());
}
return $this->CI->session->userdata('recv_stock_source');
}
public function get_comment()
{
$comment = $this->CI->session->userdata('recv_comment');
return empty($comment) ? '' : $comment;
}
public function set_comment($comment)
{
$this->CI->session->set_userdata('recv_comment', $comment);
}
public function clear_comment()
{
$this->CI->session->unset_userdata('recv_comment');
}
public function get_reference()
{
return $this->CI->session->userdata('recv_reference');
}
public function set_reference($reference)
{
$this->CI->session->set_userdata('recv_reference', $reference);
}
public function clear_reference()
{
$this->CI->session->unset_userdata('recv_reference');
}
public function is_print_after_sale()
{
return $this->CI->session->userdata('recv_print_after_sale') == 'true' ||
$this->CI->session->userdata('recv_print_after_sale') == '1';
}
public function set_print_after_sale($print_after_sale)
{
return $this->CI->session->set_userdata('recv_print_after_sale', $print_after_sale);
}
public function set_stock_source($stock_source)
{
$this->CI->session->set_userdata('recv_stock_source', $stock_source);
}
public function clear_stock_source()
{
$this->CI->session->unset_userdata('recv_stock_source');
}
public function get_stock_destination()
{
if(!$this->CI->session->userdata('recv_stock_destination'))
{
$this->set_stock_destination($this->CI->Stock_location->get_default_location_id());
}
return $this->CI->session->userdata('recv_stock_destination');
}
public function set_stock_destination($stock_destination)
{
$this->CI->session->set_userdata('recv_stock_destination', $stock_destination);
}
public function clear_stock_destination()
{
$this->CI->session->unset_userdata('recv_stock_destination');
}
public function add_item($item_id, $quantity = 1, $item_location = NULL, $discount = 0, $price = NULL, $description = NULL, $serialnumber = NULL, $receiving_quantity = NULL, $include_deleted = FALSE)
{
if(!$this->CI->Item->exists($item_id, $include_deleted))
{
$item_id = $this->CI->Item->get_item_id($item_id, $include_deleted);
if(!$item_id)
{
return FALSE;
}
}
$items = $this->get_cart();
$maxkey = 0;
$itemalreadyinsale = FALSE;
$insertkey = 0;
$updatekey = 0;
foreach($items as $item)
{
if($maxkey <= $item['line'])
{
$maxkey = $item['line'];
}
if($item['item_id'] == $item_id && $item['item_location'] == $item_location)
{
$itemalreadyinsale = TRUE;
$updatekey = $item['line'];
}
}
$insertkey = $maxkey+1;
$item_info = $this->CI->Item->get_info($item_id,$item_location);
$price = $price != NULL ? $price : $item_info->cost_price;
$item = array($insertkey => array(
'item_id' => $item_id,
'item_location' => $item_location,
'stock_name' => $this->CI->Stock_location->get_location_name($item_location),
'line' => $insertkey,
'name' => $item_info->name,
'description' => $description!=NULL ? $description: $item_info->description,
'serialnumber' => $serialnumber!=NULL ? $serialnumber: '',
'allow_alt_description' => $item_info->allow_alt_description,
'is_serialized' => $item_info->is_serialized,
'quantity' => $quantity,
'discount' => $discount,
'in_stock' => $this->CI->Item_quantity->get_item_quantity($item_id, $item_location)->quantity,
'price' => $price,
'receiving_quantity' => $receiving_quantity!=NULL ? $receiving_quantity : $item_info->receiving_quantity,
'total' => $this->get_item_total($quantity, $price, $discount)
)
);
if($itemalreadyinsale)
{
$items[$updatekey]['quantity'] += $quantity;
$items[$updatekey]['total'] = $this->get_item_total($items[$updatekey]['quantity'], $price, $discount);
}
else
{
$items += $item;
}
$this->set_cart($items);
return TRUE;
}
public function edit_item($line, $description, $serialnumber, $quantity, $discount, $price)
{
$items = $this->get_cart();
if(isset($items[$line]))
{
$line = &$items[$line];
$line['description'] = $description;
$line['serialnumber'] = $serialnumber;
$line['quantity'] = $quantity;
$line['discount'] = $discount;
$line['price'] = $price;
$line['total'] = $this->get_item_total($quantity, $price, $discount);
$this->set_cart($items);
}
return FALSE;
}
public function delete_item($line)
{
$items = $this->get_cart();
unset($items[$line]);
$this->set_cart($items);
}
public function return_entire_receiving($receipt_receiving_id)
{
$pieces = explode(' ', $receipt_receiving_id);
if(preg_match("/(RECV|KIT)/", $pieces[0]))
{
$receiving_id = $pieces[1];
}
else
{
$receiving_id = $this->CI->Receiving->get_receiving_by_reference($receipt_receiving_id)->row()->receiving_id;
}
$this->empty_cart();
$this->remove_supplier();
$this->clear_comment();
foreach($this->CI->Receiving->get_receiving_items($receiving_id)->result() as $row)
{
$this->add_item($row->item_id, -$row->quantity_purchased, $row->item_location, $row->discount_percent, $row->item_unit_price, $row->description, $row->serialnumber, $row->receiving_quantity, TRUE);
}
$this->set_supplier($this->CI->Receiving->get_supplier($receiving_id)->person_id);
}
public function add_item_kit($external_item_kit_id, $item_location)
{
$pieces = explode(' ',$external_item_kit_id);
$item_kit_id = $pieces[1];
foreach($this->CI->Item_kit_items->get_info($item_kit_id) as $item_kit_item)
{
$this->add_item($item_kit_item['item_id'],$item_kit_item['quantity'], $item_location);
}
}
public function copy_entire_receiving($receiving_id)
{
$this->empty_cart();
$this->remove_supplier();
foreach($this->CI->Receiving->get_receiving_items($receiving_id)->result() as $row)
{
$this->add_item($row->item_id, $row->quantity_purchased, $row->item_location, $row->discount_percent, $row->item_unit_price, $row->description, $row->serialnumber, $row->receiving_quantity, TRUE);
}
$this->set_supplier($this->CI->Receiving->get_supplier($receiving_id)->person_id);
}
public function clear_all()
{
$this->clear_mode();
$this->empty_cart();
$this->remove_supplier();
$this->clear_comment();
$this->clear_reference();
}
public function get_item_total($quantity, $price, $discount_percentage)
{
$total = bcmul($quantity, $price);
$discount_fraction = bcdiv($discount_percentage, 100);
$discount_amount = bcmul($total, $discount_fraction);
return bcsub($total, $discount_amount);
}
public function get_total()
{
$total = 0;
foreach($this->get_cart() as $item)
{
$total = bcadd($total, $this->get_item_total($item['quantity'], $item['price'], $item['discount']));
}
return $total;
}
}
?>