文件
mashangyoujiu/Application/Common/Business/InventoryRecord.class.php

197 行
8.4 KiB
PHP
可执行文件

<?php
namespace Common\Business;
use Common\Model\InventoryGoodsModel;
use Common\Model\SaleMGoodsModel;
use Common\Model\SInventoryGoodsModel;
use Common\Model\SPurchaseOrderModel;
use Common\Model\SSaleMGoodsModel;
//[1.7.90]
/**
* 盘点记录类
* Class InventoryRecord
* [
* 继续盘点的盘点信息 keepInventory
* 盘点商品记录 goodsRecordList
* ]
* @package Common\Business
*/
class InventoryRecord
{
/**
* 继续盘点的盘点信息
* @param $param
* [
* user_type 3商户 4门店 6收银员
* store_id
* inventory_order_id 盘点单id
* supplier_type 2 寄售供货商
* ]
* @return mixed
*/
public function keepInventory($param)
{
$inventory_order_id = $param['inventory_order_id'];
$supplier_type = $param['supplier_type']?$param['supplier_type']:'';
$store_id = $param['store_id']?$param['store_id']:0;
$SerialClass = new SerialNumberGoods();
switch ($param['user_type']) {
case 3:
if (!empty($inventory_order_id)) {
$where['state'] = 1;
$where['inventory_order_id'] = $inventory_order_id;
$InventoryGoodsModel = new InventoryGoodsModel();
$goodsList = $InventoryGoodsModel->getSelect($where, '', '', '*', 'id asc'); //盘点的商品信息
if(!empty($goodsList)){
$goods_id = array_unique(array_column($goodsList, "goods_id"));
$SaleMGoodsModel = new SaleMGoodsModel();
$saleGoodsList = $SaleMGoodsModel->getFindFields(array('goods_id' => array('in', $goods_id)), "id,goods_id,sku_id,goods_num");
foreach ($goodsList as $key => &$val) {
$val['inventory_goods_id'] = $val['id'];
$val['inventory_num'] = round($val['inventory_num'], 3);
//串号信息
if ($val['serial_number_state'] == 1) {
$serialResult = $SerialClass->recordSerialList([
'user_type' => 3,
'id' => $val['id'],
'serial_type' => 4,
'fields'=>'id,main_serial_number,auxiliary_serial_number_one,auxiliary_serial_number_two'
]);
$val['serial_list'] = $serialResult['data']['list'];
}
foreach ($saleGoodsList as $ke => $va) {
if (($val['goods_id'] == $va['goods_id']) && ($val['sku_id'] == $va['sku_id'])) {
$val['id'] = $va['id'];
$val['goods_num'] = round($va['goods_num'], 3);
}
}
}
}
}
break;
case 4:
case 6:
if (!empty($inventory_order_id)) {
$where['state'] = 1;
$where['inventory_order_id'] = $inventory_order_id;
$SInventoryGoodsModel = new SInventoryGoodsModel();
$goodsList = $SInventoryGoodsModel->getSelect($where, '', '', '*', 'id asc'); //盘点的商品信息
if(!empty($goodsList)){
$goods_id = array_unique(array_column($goodsList, "goods_id"));
$SSaleMGoodsModel = new SSaleMGoodsModel();
$saleGoodsList = $SSaleMGoodsModel->getFindFields(array('goods_id' => array('in', $goods_id)), "id,goods_id,sku_id,goods_num");
foreach ($goodsList as $key => &$val) {
$val['inventory_goods_id'] = $val['id'];
$val['inventory_num'] = round($val['inventory_num'], 3);
//串号信息
if ($val['serial_number_state'] == 1) {
$serialResult = $SerialClass->recordSerialList([
'user_type' => 4,
'id' => $val['id'],
'serial_type' => 4
]);
$val['serial_list'] = $serialResult['data']['list'];
}
foreach ($saleGoodsList as $ke => $va) {
if (($val['goods_id'] == $va['goods_id']) && ($val['sku_id'] == $va['sku_id'])) {
$val['id'] = $va['id'];
$val['goods_num'] = round($va['goods_num'], 3);
}
}
if ($supplier_type == 2) {
$parameter = array(
'goods_id' => $val['goods_id'],
'sku_id' => $val['sku_id'],
'store_id' => $store_id,
);
$val['pur_id'] = $SSaleMGoodsModel->getPurchaseId($parameter);
}
}
}
}
break;
}
return callBack(statusCode()['success'],'查询成功',$goodsList?$goodsList:[]);
}
/**
* 盘点商品记录
* @param $param
* [
* user_type 3商户 4门店 6收银员
* order_id 盘点订单id
* purchase_price_state 查看进价权限 1可以 2不可以
* supplier_type 1普通供货商 2寄售供货商
* type 0不变 1盘盈 2盘亏
* ]
* @return mixed
* [
* list 列表
* goods_species 商品种数
* quantity 盈亏数量
* amount 盈亏金额
* ]
*/
public function goodsRecordList($param)
{
if (in_array($param['type'], ['0', '1', '2'])) {
$where['type'] = $param['type'];
}
$where['state'] = 1;
$where['inventory_order_id'] = $param['order_id'];
try {
switch ($param['user_type']) {
case 3:
//商户
$InventoryGoodsModel = new InventoryGoodsModel();
break;
case 4:
case 6:
//门店
$InventoryGoodsModel = new SInventoryGoodsModel();
$PurchaseModel = new SPurchaseOrderModel();
break;
}
$quantity = 0; // 盈亏数量
$amount = 0; //盈亏金额
$detailsList = $InventoryGoodsModel->getSelect($where, $page = '', $limit = '');
} catch (\Exception $e) {
$detailsList = [];
}
if (!empty($detailsList)) {
foreach ($detailsList as $key => &$val) {
$val['index'] = $key + 1;
$quantity += $val['num'];
$amount += $val['subtotal'];
$val['inventory_num'] = round($val['inventory_num'], 3);
$val['sku_num'] = round($val['sku_num'], 3);
$val['goods_num'] = round($val['goods_num'], 3);
$val['num'] = round($val['num'], 3);
if ($val['attribute_state'] == 2) {
$val['goods_code'] = $val['sku_code'];
$val['goods_number'] = $val['sku_goods_number'];
}
if ($param['purchase_price_state'] == 2) {
$val['cost_price'] = '***';
$val['subtotal'] = '***';
} else {
$val['cost_price'] = round($val['cost_price'], 2);
$val['subtotal'] = round($val['subtotal'], 2);
}
if ($param['supplier_type'] == 2 && !empty($val['purchase_order_id'])) {
$val['purchase_order_number'] = $PurchaseModel->getFindField(array('id' => $val['purchase_order_id']), "order_number");
}
}
}
return callBack(statusCode()['success'], "查询成功", [
'list' => $detailsList ? $detailsList : [],
'goods_species' => count($detailsList),
'quantity' => $quantity,
'amount' => $amount
]);
}
}