进销存出库明细记录

diygw-ui-php项目里,一个增加记录等可能需要操作多张表的记录。我们以进销存的出库明细记录为例存储到数据库中,diygw-ui-php后台thinkphp后台通常涉及以下几个步骤:

数据库表定义

实现我们定义了三张表、一个产品表、出库订单表、出库订单产品明细表

生成API

进入DIY可视化API代码生成器,我们生成这三张表结应的API。


出库订单明细记录操作

我们在设计的表单界面写上我们出库记录的API。

出库订单数据操作

最核心的代码来了,我们这个add方法里可以增加我们的处理。系统model默认的add方法里有beforeAdd跟afterAdd拦截处理。

只需要在afterAdd拦截处理增加自己的代码。

afterAdd拦截方法处理

在orderModel增加增加后处理订单产品明细数据,对产品原有的数据进行数量减掉出库数量。


 /*
     * 提交订单时加工产品数据增加入录记录明细
     */
    public function afterAdd(&$data){
        $products = $data['products'];
        //循环出仓明细数据
        foreach ($products as $product) {
            $id = $product['id'];
            //这里新增一个产品id来存放对应产品数据。
            $product['productId'] = $product['id'];
            //默认id是一个自增值
            unset($product['id']);
            $product['ordersId'] = $data['id'];
            //增加出库记录
            $productOutModel = new ProductOutModel();
            $productOutModel->add($product);
            //减少库存数量
            $productModel = new ProductModel();
            $productModel->decValue($id,'number',$product['number']);
        }
        return true;
    }