Price.php 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. <?php
  2. namespace Scm\Lib;
  3. use Dever;
  4. class Price
  5. {
  6. public function __construct()
  7. {
  8. Dever::load('manage/auth.init');
  9. }
  10. # 根据单位获取价格
  11. public function getByUnit($goods_id, $sku_id, $unit_id, $num, $cash, $in_num = 0, $supplier_id = false)
  12. {
  13. $goods_info = Dever::load('scm_product/lib/info')->getBaseInfo($goods_id, $sku_id);
  14. $result = array();
  15. if ($goods_info) {
  16. $where['goods_id'] = $goods_id;
  17. $where['sku_id'] = $sku_id;
  18. # 获取供应商供货价
  19. if ($supplier_id) {
  20. $where['supplier_id'] = $supplier_id;
  21. $sku = Dever::db('scm_supplier/goods_sku')->getOne($where);
  22. }
  23. $result['unit_id'] = $unit_id;
  24. $result['base_unit_id'] = $goods_info['unit_id'];
  25. if (!is_numeric($cash)) {
  26. $cash = isset($sku[$cash]) && $sku[$cash] ? $sku[$cash] : $goods_info[$cash];
  27. }
  28. $result['base_cash'] = $result['cash'] = $cash;
  29. $result['base_num'] = $result['num'] = $num;
  30. $result['in_num'] = $in_num;
  31. $unit = Dever::db('scm_product/info_unit')->find(array('info_id' => $goods_info['id'], 'unit_id' => $unit_id));
  32. if ($unit && $unit_id != $goods_info['unit_id'] && $unit['discount'] > 0) {
  33. $result['cash'] = $result['cash'] * $unit['radio'] * $unit['discount'];
  34. $result['base_num'] = $num * $unit['radio'];
  35. $result['in_num'] = round($in_num / $unit['radio'], 2);
  36. }
  37. $unit_info = Dever::db('scm/unit')->one($unit_id);
  38. $result = Dever::number(array(array('cash', 'base_cash', 'num', 'base_num', 'in_num'), $result));
  39. if ($result['in_num'] > 0) {
  40. $result['goods_id'] = $result['in_num'] . $unit_info['name'];
  41. }
  42. }
  43. return $result;
  44. }
  45. }