创建版本

This commit is contained in:
2021-02-22 12:17:00 +08:00
commit af555f49c3
2332 changed files with 369202 additions and 0 deletions
+72
View File
@@ -0,0 +1,72 @@
<?php namespace Gdoo\Stock\Hooks;
use DB;
use Exception;
class AllocationHook
{
public function onBeforeForm($params) {
return $params;
}
public function onAfterForm($params) {
return $params;
}
public function onBeforeStore($params) {
return $params;
}
public function onBeforeAudit($params) {
$id = $params['id'];
$master = DB::table('stock_allocation as sa')
->leftJoin('warehouse as w', 'w.id', '=', 'sa.in_warehouse_id')
->leftJoin('warehouse as w2', 'w2.id', '=', 'sa.out_warehouse_id')
->leftJoin('department as d', 'd.id', '=', 'sa.in_department_id')
->leftJoin('department as d2', 'd2.id', '=', 'sa.out_department_id')
->leftJoin('stock_type as st', 'st.id', '=', 'sa.in_type_id')
->leftJoin('stock_type as st2', 'st2.id', '=', 'sa.out_type_id')
->where('sa.id', $id)
->selectRaw('
sa.*,
st.code as in_type_code,
st2.code as out_type_code,
d.code as in_department_code,
d2.code as out_department_code,
w.code as in_warehouse_code,
w2.code as out_warehouse_code
')
->first();
$rows = DB::table('stock_allocation_data')
->leftJoin('product', 'product.id', '=', 'stock_allocation_data.product_id')
->where('stock_allocation_data.allocation_id', $id)
->get(['stock_allocation_data.*', 'product.code as product_code']);
// 同步数据到yonyou
$ret = plugin_sync_api('postTransVouch', ['master' => $master, 'rows' => $rows]);
if ($ret['success'] == true) {
return $params;
}
abort_error($ret['msg']);
}
public function onBeforeAbort($params) {
$id = $params['id'];
$master = DB::table('stock_allocation')->where('id', $id)->first();
// 检查用友单据是否存在
$ret = plugin_sync_api('getVouchExist', ['table' => 'TransVouch', 'field' => 'cTVCode', 'value' => $master['sn']]);
if ($ret['msg'] > 0) {
abort_error('用友存在其他入库单['.$master['sn'].']无法弃审。');
}
return $params;
}
public function onAfterStore($params) {
return $params;
}
public function onBeforeDelete($params) {
return $params;
}
}
+142
View File
@@ -0,0 +1,142 @@
<?php namespace Gdoo\Stock\Hooks;
use DB;
use Exception;
class CancelHook
{
public function onBeforeForm($params) {
return $params;
}
public function onAfterForm($params) {
return $params;
}
public function onBeforeStore($params) {
$datas = $params['datas'];
// 处理生产日期
foreach($datas as $i => $data) {
if ($data['table'] == 'stock_cancel_data') {
foreach($data['data'] as $j => $row) {
if ($row['batch_sn']) {
$batch_sn = substr($row['batch_sn'], 0, 6);
$sn = str_split($batch_sn, 2);
$row['batch_date'] = date("Y-m-d", mktime(0, 0, 0, $sn[1], $sn[2], $sn[0]));
}
if ($row['quantity'] >= 0) {
abort_error('产品编码['.$row['product_code'].']数量必须是负数。');
}
$data['data'][$j] = $row;
}
$datas[$i] = $data;
}
}
$params['datas'] = $datas;
return $params;
}
public function onBeforeAudit($params) {
$id = $params['id'];
$master = DB::table('stock_cancel')
->leftJoin('customer', 'customer.id', '=', 'stock_cancel.customer_id')
->leftJoin('customer_tax', 'customer_tax.id', '=', 'stock_cancel.tax_id')
->leftJoin('customer_region', 'customer_region.id', '=', 'customer.region_id')
->leftJoin('department', 'department.id', '=', 'customer_tax.department_id')
->leftJoin('sale_type', 'sale_type.id', '=', 'stock_cancel.type_id')
->where('stock_cancel.id', $id)
->first([
'stock_cancel.*',
'sale_type.code as sale_code',
'department.code as department_code',
'customer_tax.code as customer_code',
'customer.region_id',
'customer_region.owner_user_id as salesman_id',
'customer.region2_id',
'customer.region3_id'
]);
$sql = "select d.id,d.type_id,d.price,d.quantity,d.money,d.other_money,
d.batch_sn,
d.poscode,
d.remark,
d.product_id,
d.warehouse_id,
product.code as product_code,
product.name as product_name,
d.total_weight,
warehouse.code as warehouse_code,
null as fee_category_name,
null as fee_category_id,
null as fee_src_type_id,
null as fee_src_sn,
null as fee_src_id,
null as promotion_sn,
null as row_index
from stock_cancel_data as d
left Join product on product.id = d.product_id
left Join warehouse on warehouse.id = d.warehouse_id
where d.cancel_id = ".$id."
and product.code <> '99001'
union
select t.* from (
select d.id,
null as type_id,
null as price,
null as quantity,
SUM(d.money) OVER(PARTITION BY product.code) as money,
SUM(d.other_money) OVER(PARTITION BY product.code) as other_money,
d.batch_sn,
d.poscode,
d.remark,
null as product_id,
null as warehouse_id,
product.code as product_code,
product.name as product_name,
null as total_weight,
null as warehouse_code,
ccc.name as fee_category_name,
d.fee_category_id as fee_category_id,
d.fee_src_type_id as fee_src_type_id,
d.fee_src_sn as fee_src_sn,
d.fee_src_id as fee_src_id,
d.promotion_sn as promotion_sn,
row_number() over(partition by product.code order by d.id desc) row_index
from stock_cancel_data as d
left Join product on product.id = d.product_id
left Join customer_cost_category as ccc on ccc.id = d.fee_category_id
where d.cancel_id = ".$id." and product.code = '99001'
) t where t.row_index = 1";
$rows = DB::select($sql);
// 同步数据到yonyou
$ret = plugin_sync_api('postCancelOrder', ['master' => $master, 'rows' => $rows]);
if ($ret['success'] == true) {
return $params;
}
abort_error($ret['msg']);
}
public function onBeforeAbort($params) {
$id = $params['id'];
$master = DB::table('stock_cancel')->where('id', $id)->first();
// 检查用友单据是否存在
$ret = plugin_sync_api('getVouchExist', ['table' => 'DispatchList', 'field' => 'cDLCode', 'value' => $master['sn']]);
if ($ret['msg'] > 0) {
abort_error('用友存在退货申请['.$master['sn'].']无法弃审。');
}
return $params;
}
public function onAfterStore($params) {
return $params;
}
public function onBeforeDelete($params) {
return $params;
}
}
+23
View File
@@ -0,0 +1,23 @@
<?php namespace Gdoo\Stock\Hooks;
class DeliveryDataHook
{
public function onBeforeForm($params) {
return $params;
}
public function onQueryForm($params) {
$q = $params['q'];
$q->leftJoin('customer_order_type as cot', 'cot.id', '=', 'stock_delivery_data.type_id')
->orderBy('cot.sort', 'asc')
->orderBy('product_id_product.code', 'asc')
->orderBy('stock_delivery_data.id', 'asc');
$params['q'] = $q;
return $params;
}
public function onAfterForm($arguments) {
return $arguments;
}
}
+161
View File
@@ -0,0 +1,161 @@
<?php namespace Gdoo\Stock\Hooks;
use Log;
use DB;
use Exception;
use Gdoo\Stock\Services\StockService;
class DeliveryHook
{
public function onBeforeForm($params) {
return $params;
}
public function onAfterForm($params) {
return $params;
}
public function onBeforeStore($params) {
$datas = $params['datas'];
foreach($datas as $data) {
if ($data['table'] == 'stock_delivery_data') {
foreach($data['data'] as $row) {
if ($row['product_id'] == '20226') {
continue;
}
// 检查库存
$exec = StockService::verfyInvoiceBatch($row['warehouse_id'], $row['product_id'], $row['batch_sn'], $row['poscode'], $row['id'], 0, 0);
if ($exec[0]['ky_num'] < $row['quantity']) {
$error = [];
$error[] = '存货编码为:'.$row['product_code'];
$error[] = '仓库名称为:'.$row['warehouse_id_name'];
$error[] = '批次为:'.$row['batch_sn'];
$error[] = '货位为:'.$row['poscode'];
$error[] = '发货数量:'.$row['quantity'];
$error[] = '可用量为:'.$exec[0]['ky_num'];
abort_error(join("<br>", $error));
}
}
}
}
return $params;
}
public function onBeforeAudit($params) {
$id = $params['id'];
$master = DB::table('stock_delivery')
->leftJoin('customer', 'customer.id', '=', 'stock_delivery.customer_id')
->leftJoin('customer_tax', 'customer_tax.id', '=', 'stock_delivery.tax_id')
->leftJoin('customer_region', 'customer_region.id', '=', 'customer.region_id')
->leftJoin('department', 'department.id', '=', 'customer_tax.department_id')
->leftJoin('sale_type', 'sale_type.id', '=', 'stock_delivery.type_id')
->where('stock_delivery.id', $id)
->first([
'stock_delivery.*',
'sale_type.code as sale_code',
'department.code as department_code',
'customer_tax.code as customer_code',
'customer.region_id',
'customer_region.owner_user_id as salesman_id',
'customer.region2_id',
'customer.region3_id'
]);
$sql = "select sdd.id,sdd.type_id,sdd.price,sdd.quantity,sdd.money,sdd.other_money,
sdd.batch_sn,
sdd.poscode,
sdd.remark,
sdd.product_id,
sdd.warehouse_id,
product.code as product_code,
product.name as product_name,
sdd.total_weight,
warehouse.code as warehouse_code,
null as fee_category_name,
null as fee_category_id,
null as fee_src_type_id,
null as fee_src_sn,
null as fee_src_id,
null as promotion_sn,
null as row_index
from stock_delivery_data as sdd
left Join product on product.id = sdd.product_id
left Join warehouse on warehouse.id = sdd.warehouse_id
where sdd.delivery_id = ".$id."
and product.code <> '99001'
union
select t.* from (
select sdd.id,
null as type_id,
null as price,
null as quantity,
SUM(sdd.money) OVER(PARTITION BY product.code) as money,
SUM(sdd.other_money) OVER(PARTITION BY product.code) as other_money,
sdd.batch_sn,
sdd.poscode,
sdd.remark,
null as product_id,
null as warehouse_id,
product.code as product_code,
product.name as product_name,
null as total_weight,
null as warehouse_code,
ccc.name as fee_category_name,
sdd.fee_category_id as fee_category_id,
sdd.fee_src_type_id as fee_src_type_id,
sdd.fee_src_sn as fee_src_sn,
sdd.fee_src_id as fee_src_id,
sdd.promotion_sn as promotion_sn,
row_number() over(partition by product.code order by sdd.id desc) row_index
from stock_delivery_data as sdd
left Join product on product.id = sdd.product_id
left Join customer_cost_category as ccc on ccc.id = sdd.fee_category_id
where sdd.delivery_id = ".$id." and product.code = '99001'
) t where t.row_index = 1";
$rows = DB::select($sql);
// 检查库存
foreach($rows as $row) {
if ($row['product_code'] == '99001') {
continue;
}
// 检查库存
$exec = StockService::verfyInvoiceBatch($row['warehouse_id'], $row['product_id'], $row['batch_sn'], $row['poscode'], $row['id'], 0, 0);
if ($exec[0]['ky_num'] < $row['quantity']) {
abort_error('存货编码为['.$row['product_code'].']的存货库存不足。');
}
}
// 同步数据到yonyou
$ret = plugin_sync_api('postDelivery', ['master' => $master, 'rows' => $rows]);
if ($ret['success'] == true) {
return $params;
}
abort_error($ret['msg']);
}
public function onBeforeAbort($params) {
$id = $params['id'];
$master = DB::table('stock_delivery')->where('id', $id)->first();
// 检查用友单据是否存在
$ret = plugin_sync_api('getVouchExist', ['table' => 'DispatchList', 'field' => 'cDLCode', 'value' => $master['sn']]);
if ($ret['msg'] > 0) {
abort_error('用友存在发货单['.$master['sn'].']无法弃审。');
}
return $params;
}
public function onAfterStore($params) {
return $params;
}
public function onBeforeDelete($params) {
return $params;
}
}
+149
View File
@@ -0,0 +1,149 @@
<?php namespace Gdoo\Stock\Hooks;
use DB;
use Exception;
use Gdoo\Stock\Services\StockService;
class DirectHook
{
public function onBeforeForm($params) {
return $params;
}
public function onAfterForm($params) {
return $params;
}
public function onBeforeStore($params) {
$master = $params['master'];
$warehouse = DB::table('warehouse')->find($master['warehouse_id']);
$datas = $params['datas'];
foreach($datas as $data) {
if ($data['table'] == 'stock_direct_data') {
foreach($data['data'] as $row) {
if ($row['product_id'] == '20226') {
continue;
}
// 检查库存
$exec = StockService::verfyInvoiceBatch($master['warehouse_id'], $row['product_id'], $row['batch_sn'], $row['poscode'], 0, 0, $row['id']);
if ($exec[0]['ky_num'] < $row['quantity']) {
$error = [];
$error[] = '存货编码为:'.$row['product_code'];
$error[] = '仓库名称为:'.$warehouse['name'];
$error[] = '批次为:'.$row['batch_sn'];
$error[] = '货位为:'.$row['poscode'];
$error[] = '发货数量:'.$row['quantity'];
$error[] = '可用量为:'.$exec[0]['ky_num'];
abort_error(join("<br>", $error));
}
}
}
}
return $params;
}
public function onBeforeAudit($params) {
$id = $params['id'];
$master = DB::table('stock_direct')
->leftJoin('customer', 'customer.id', '=', 'stock_direct.customer_id')
->leftJoin('customer_tax', 'customer_tax.id', '=', 'stock_direct.tax_id')
->leftJoin('customer_region', 'customer_region.id', '=', 'customer.region_id')
->leftJoin('department', 'department.id', '=', 'customer_tax.department_id')
->leftJoin('warehouse', 'warehouse.id', '=', 'stock_direct.warehouse_id')
->leftJoin('sale_type', 'sale_type.id', '=', 'stock_direct.type_id')
->where('stock_direct.id', $id)
->first([
'stock_direct.*',
'sale_type.code as sale_code',
'department.code as department_code',
'customer_tax.code as customer_code',
'warehouse.code as warehouse_code',
'customer.region_id',
'customer_region.owner_user_id as salesman_id',
'customer.region2_id',
'customer.region3_id'
]);
$sql = DB::table('stock_direct_data')
->leftJoin('product', 'product.id', '=', 'stock_direct_data.product_id')
->where('stock_direct_data.direct_id', $id)
->where('product.code', '<>', '99001')
->selectRaw('
stock_direct_data.id,
stock_direct_data.type_id,
stock_direct_data.price,
stock_direct_data.quantity,
stock_direct_data.money,
stock_direct_data.other_money,
stock_direct_data.batch_sn,
stock_direct_data.poscode,
stock_direct_data.remark,
stock_direct_data.product_id,
product.code as product_code,
product.name as product_name,
stock_direct_data.total_weight
');
$rows = DB::table('stock_direct_data')
->leftJoin('product', 'product.id', '=', 'stock_direct_data.product_id')
->where('stock_direct_data.direct_id', $id)
->where('product.code', '99001')
->selectRaw('
max(stock_direct_data.id) as id,
null as type_id,
null as price,
null as quantity,
sum(stock_direct_data.money) as money,
sum(stock_direct_data.other_money) as other_money,
stock_direct_data.batch_sn,
stock_direct_data.poscode,
stock_direct_data.remark,
null as product_id,
product.code as product_code,
product.name as product_name,
null as total_weight
')
->groupBy('product.name', 'product.code', 'stock_direct_data.batch_sn', 'stock_direct_data.poscode', 'stock_direct_data.remark')
->union($sql)->get();
// 检查库存
foreach($rows as $row) {
if ($row['product_code'] == '99001') {
continue;
}
$exec = StockService::verfyInvoiceBatch($master['warehouse_id'], $row['product_id'], $row['batch_sn'], $row['poscode'], 0, 0, $row['id']);
if ($exec[0]['ky_num'] < $row['quantity']) {
abort_error('存货编码为['.$row['product_code'].']的存货库存不足。');
}
}
// 同步数据到yonyou
$ret = plugin_sync_api('postDeliveryZY', ['master' => $master, 'rows' => $rows]);
if ($ret['success'] == true) {
return $params;
}
abort_error($ret['msg']);
}
public function onBeforeAbort($params) {
$id = $params['id'];
$master = DB::table('stock_direct')->where('id', $id)->first();
// 检查用友单据是否存在
$ret = plugin_sync_api('getVouchExist', ['table' => 'DispatchList', 'field' => 'cDLCode', 'value' => $master['sn']]);
if ($ret['msg'] > 0) {
abort_error('用友存在发货单(直营)['.$master['sn'].']无法弃审。');
}
return $params;
}
public function onAfterStore($params) {
return $params;
}
public function onBeforeDelete($params) {
return $params;
}
}
+67
View File
@@ -0,0 +1,67 @@
<?php namespace Gdoo\Stock\Hooks;
use DB;
use Exception;
class Record01Hook
{
public function onBeforeForm($params) {
return $params;
}
public function onAfterForm($params) {
return $params;
}
public function onBeforeStore($params) {
return $params;
}
public function onBeforeAudit($params) {
$id = $params['id'];
$master = DB::table('stock_record01')
->leftJoin('warehouse', 'warehouse.id', '=', 'stock_record01.warehouse_id')
->leftJoin('department', 'department.id', '=', 'stock_record01.department_id')
->leftJoin('stock_type', 'stock_type.id', '=', 'stock_record01.type_id')
->leftJoin('supplier', 'supplier.id', '=', 'stock_record01.supplier_id')
->where('stock_record01.id', $id)
->first([
'stock_record01.*',
'department.code as department_code',
'stock_type.code as type_code',
'supplier.code as supplier_code',
'warehouse.code as warehouse_code',
]);
$rows = DB::table('stock_record01_data')
->leftJoin('product', 'product.id', '=', 'stock_record01_data.product_id')
->where('stock_record01_data.record01_id', $id)
->get(['stock_record01_data.*', 'product.code as product_code']);
// 同步数据到yonyou
$ret = plugin_sync_api('postRecord01', ['master' => $master, 'rows' => $rows]);
if ($ret['success'] == true) {
return $params;
}
abort_error($ret['msg']);
}
public function onBeforeAbort($params) {
$id = $params['id'];
$master = DB::table('stock_record01')->where('id', $id)->first();
// 检查用友单据是否存在
$ret = plugin_sync_api('getVouchExist', ['table' => 'Rdrecord01', 'field' => 'cCode', 'value' => $master['sn']]);
if ($ret['msg'] > 0) {
abort_error('用友存在采购单['.$master['sn'].']无法弃审。');
}
return $params;
}
public function onAfterStore($params) {
return $params;
}
public function onBeforeDelete($params) {
return $params;
}
}
+76
View File
@@ -0,0 +1,76 @@
<?php namespace Gdoo\Stock\Hooks;
use DB;
use Exception;
class Record08Hook
{
public function onBeforeForm($params) {
return $params;
}
public function onAfterForm($params) {
return $params;
}
public function onBeforeStore($params) {
$datas = $params['datas'];
// 处理生产日期
foreach($datas as $i => $data) {
if ($data['table'] == 'stock_record08_data') {
foreach($data['data'] as $j => $row) {
if ($row['batch_sn']) {
$batch_sn = substr($row['batch_sn'], 0, 6);
$sn = str_split($batch_sn, 2);
$row['batch_date'] = date("Y-m-d", mktime(0, 0, 0, $sn[1], $sn[2], $sn[0]));
}
$data['data'][$j] = $row;
}
$datas[$i] = $data;
}
}
$params['datas'] = $datas;
return $params;
}
public function onBeforeAudit($params) {
$id = $params['id'];
$master = DB::table('stock_record08')
->leftJoin('warehouse', 'warehouse.id', '=', 'stock_record08.warehouse_id')
->leftJoin('department', 'department.id', '=', 'stock_record08.department_id')
->leftJoin('stock_type', 'stock_type.id', '=', 'stock_record08.type_id')
->where('stock_record08.id', $id)
->first(['stock_record08.*', 'stock_type.code as type_code', 'department.code as department_code', 'warehouse.code as warehouse_code']);
$rows = DB::table('stock_record08_data')
->leftJoin('product', 'product.id', '=', 'stock_record08_data.product_id')
->where('stock_record08_data.record08_id', $id)
->get(['stock_record08_data.*', 'product.code as product_code']);
// 同步数据到yonyou
$ret = plugin_sync_api('postRecord08', ['master' => $master, 'rows' => $rows]);
if ($ret['success'] == true) {
return $params;
}
abort_error($ret['msg']);
}
public function onBeforeAbort($params) {
$id = $params['id'];
$master = DB::table('stock_record08')->where('id', $id)->first();
// 检查用友单据是否存在
$ret = plugin_sync_api('getVouchExist', ['table' => 'Rdrecord08', 'field' => 'cCode', 'value' => $master['sn']]);
if ($ret['msg'] > 0) {
abort_error('用友存在其他入库单['.$master['sn'].']无法弃审。');
}
return $params;
}
public function onAfterStore($params) {
return $params;
}
public function onBeforeDelete($params) {
return $params;
}
}
+114
View File
@@ -0,0 +1,114 @@
<?php namespace Gdoo\Stock\Hooks;
use DB;
use Exception;
use Gdoo\Stock\Services\StockService;
class Record09Hook
{
public function onBeforeForm($params) {
return $params;
}
public function onAfterForm($params) {
return $params;
}
public function onBeforeStore($params) {
$master = $params['master'];
$warehouse = DB::table('warehouse')->find($master['warehouse_id']);
$datas = $params['datas'];
foreach($datas as $data) {
if ($data['table'] == 'stock_record09_data') {
foreach($data['data'] as $row) {
// 检查库存
$exec = StockService::verfyInvoiceBatch($master['warehouse_id'], $row['product_id'], $row['batch_sn'], $row['poscode'], 0, $row['id'], 0);
if ($exec[0]['ky_num'] < $row['quantity']) {
$error = [];
$error[] = '存货编码为:'.$row['product_code'];
$error[] = '仓库名称为:'.$warehouse['name'];
$error[] = '批次为:'.$row['batch_sn'];
$error[] = '货位为:'.$row['poscode'];
$error[] = '发货数量:'.$row['quantity'];
$error[] = '可用量为:'.$exec[0]['ky_num'];
abort_error(join("<br>", $error));
}
}
}
}
return $params;
}
public function onBeforeAudit($params) {
$id = $params['id'];
$master = DB::table('stock_record09')
->leftJoin('warehouse', 'warehouse.id', '=', 'stock_record09.warehouse_id')
->leftJoin('department', 'department.id', '=', 'stock_record09.department_id')
->leftJoin('stock_type', 'stock_type.id', '=', 'stock_record09.type_id')
->where('stock_record09.id', $id)
->first(['stock_record09.*', 'stock_type.code as type_code', 'department.code as department_code', 'warehouse.code as warehouse_code']);
$rows = DB::table('stock_record09_data')
->leftJoin('product', 'product.id', '=', 'stock_record09_data.product_id')
->where('stock_record09_data.record09_id', $id)
->selectRaw('
stock_record09_data.*,
product.code as product_code,
product.weight * stock_record09_data.quantity as total_weight
')
->get();
$master['total_weight'] = $rows->sum('total_weight');
// 检查库存
foreach($rows as $row) {
$exec = StockService::verfyInvoiceBatch($master['warehouse_id'], $row['product_id'], $row['batch_sn'], $row['poscode'], 0, $row['id'], 0);
if ($exec[0]['ky_num'] < $row['quantity']) {
abort_error('存货编码为['.$row['product_code'].']的存货库存不足。');
}
}
if ($master['type_id'] == 2) {
$post_type = 'postSampleDelivery';
} else {
$post_type = 'postRecord09';
}
// 同步数据到yonyou
$ret = plugin_sync_api($post_type, ['master' => $master, 'rows' => $rows]);
if ($ret['success'] == true) {
return $params;
}
abort_error($ret['msg']);
}
public function onBeforeAbort($params) {
$id = $params['id'];
$master = DB::table('stock_record09')->where('id', $id)->first();
// 检查用友单据是否存在
if ($master['type_id'] == 2) {
$ret = plugin_sync_api('getVouchExist', ['table' => 'DispatchList', 'field' => 'cDLCode', 'value' => $master['sn']]);
if ($ret['msg'] > 0) {
abort_error('用友存在样品申请单['.$master['sn'].']无法弃审。');
}
} else {
$ret = plugin_sync_api('getVouchExist', ['table' => 'Rdrecord09', 'field' => 'cCode', 'value' => $master['sn']]);
if ($ret['msg'] > 0) {
abort_error('用友存在其他出库单['.$master['sn'].']无法弃审。');
}
}
return $params;
}
public function onAfterStore($params) {
return $params;
}
public function onBeforeDelete($params) {
return $params;
}
}
+21
View File
@@ -0,0 +1,21 @@
<?php namespace Gdoo\Stock\Hooks;
class Record10DataHook
{
public function onBeforeForm($params) {
return $params;
}
public function onQueryForm($params) {
$q = $params['q'];
$q->orderBy('stock_record10_data.batch_sn', 'asc')
->orderBy('product_id_product.code', 'asc');
$params['q'] = $q;
return $params;
}
public function onAfterForm($arguments) {
return $arguments;
}
}
+94
View File
@@ -0,0 +1,94 @@
<?php namespace Gdoo\Stock\Hooks;
use DB;
use Exception;
class Record10Hook
{
public function onBeforeForm($params) {
return $params;
}
public function onBillSeqNo($params) {
// 川南库管独立编号
if (auth()->id() == 2177) {
$params['rule'] = $params['rule'].'11';
} else {
$params['rule'] = $params['rule'].'10';
}
return $params;
}
public function onBeforePage($params) {
// 川南库管登录
if (auth()->id() == 2177) {
$params['q']->whereIn('stock_record10.warehouse_id', [20001, 20047]);
} else {
$params['q']->whereNotIn('stock_record10.warehouse_id', [20001, 20047]);
}
return $params;
}
public function onBeforeStore($params) {
$datas = $params['datas'];
// 处理生产日期
foreach($datas as $i => $data) {
if ($data['table'] == 'stock_record10_data') {
foreach($data['data'] as $j => $row) {
if ($row['batch_sn']) {
$batch_sn = substr($row['batch_sn'], 0, 6);
$sn = str_split($batch_sn, 2);
$row['batch_date'] = date("Y-m-d", mktime(0, 0, 0, $sn[1], $sn[2], $sn[0]));
}
$data['data'][$j] = $row;
}
$datas[$i] = $data;
}
}
$params['datas'] = $datas;
return $params;
}
public function onBeforeAudit($params) {
$id = $params['id'];
$master = DB::table('stock_record10')
->leftJoin('warehouse', 'warehouse.id', '=', 'stock_record10.warehouse_id')
->leftJoin('department', 'department.id', '=', 'stock_record10.department_id')
->leftJoin('stock_type', 'stock_type.id', '=', 'stock_record10.type_id')
->where('stock_record10.id', $id)
->first(['stock_record10.*', 'stock_type.code as type_code', 'department.code as department_code', 'warehouse.code as warehouse_code']);
$rows = DB::table('stock_record10_data')
->leftJoin('product', 'product.id', '=', 'stock_record10_data.product_id')
->where('stock_record10_data.record10_id', $id)
->get(['stock_record10_data.*', 'product.code as product_code']);
// 同步数据到yonyou
$ret = plugin_sync_api('postRecord10', ['master' => $master, 'rows' => $rows]);
if ($ret['success'] == true) {
return $params;
}
abort_error($ret['msg']);
}
public function onBeforeAbort($params) {
$id = $params['id'];
$master = DB::table('stock_record10')->where('id', $id)->first();
// 检查用友单据是否存在
$ret = plugin_sync_api('getVouchExist', ['table' => 'Rdrecord10', 'field' => 'cCode', 'value' => $master['sn']]);
if ($ret['msg'] > 0) {
abort_error('用友存在产成品入库单['.$master['sn'].']无法弃审。');
}
return $params;
}
public function onAfterStore($params) {
return $params;
}
public function onBeforeDelete($params) {
return $params;
}
}
+77
View File
@@ -0,0 +1,77 @@
<?php namespace Gdoo\Stock\Hooks;
use DB;
use Exception;
class Record11Hook
{
public function onBeforeForm($params) {
return $params;
}
public function onAfterForm($params) {
return $params;
}
public function onBeforeStore($params) {
$datas = $params['datas'];
// 处理生产日期
foreach($datas as $i => $data) {
if ($data['table'] == 'stock_record11_data') {
foreach($data['data'] as $j => $row) {
if ($row['batch_sn']) {
$batch_sn = substr($row['batch_sn'], 0, 6);
$sn = str_split($batch_sn, 2);
$row['batch_date'] = date("Y-m-d", mktime(0, 0, 0, $sn[1], $sn[2], $sn[0]));
}
$data['data'][$j] = $row;
}
$datas[$i] = $data;
}
}
$params['datas'] = $datas;
return $params;
}
public function onBeforeAudit($params) {
$id = $params['id'];
$master = DB::table('stock_record11')
->leftJoin('warehouse', 'warehouse.id', '=', 'stock_record11.warehouse_id')
->leftJoin('department', 'department.id', '=', 'stock_record11.department_id')
->leftJoin('stock_type', 'stock_type.id', '=', 'stock_record11.category_id')
->where('stock_record11.id', $id)
->first(['stock_record11.*', 'stock_type.code as type_code', 'department.code as department_code', 'warehouse.code as warehouse_code']);
$rows = DB::table('stock_record11_data')
->leftJoin('product', 'product.id', '=', 'stock_record11_data.product_id')
->where('stock_record11_data.record11_id', $id)
->get(['stock_record11_data.*', 'product.code as product_code']);
// 同步数据到yonyou
$ret = plugin_sync_api('postRecord11', ['master' => $master, 'rows' => $rows]);
if ($ret['success'] == true) {
return $params;
}
abort_error($ret['msg']);
}
public function onBeforeAbort($params) {
$id = $params['id'];
$master = DB::table('stock_record11')->where('id', $id)->first();
// 检查用友单据是否存在
$ret = plugin_sync_api('getVouchExist', ['table' => 'Rdrecord11', 'field' => 'cCode', 'value' => $master['sn']]);
if ($ret['msg'] > 0) {
abort_error('用友存在原材料出库单['.$master['sn'].']无法弃审。');
}
return $params;
}
public function onAfterStore($params) {
return $params;
}
public function onBeforeDelete($params) {
return $params;
}
}