Skip to content

预采购

预采购


purchase/task/get_create_source(修改)

接口描述: 传入spu id返回对应的采购规格和相关信息

请求方法: GET

请求参数: 
        不变

响应: 
    【
        {
            spec_id(新增)             M               str             采购规格id
            ratio(新增)               M               float           采购ratio
            unit_name(新增)           M               str             采购单位
            std_unit_name       M               str             基本单位
        }
    】

purchase/task/create_many(新增)

接口描述: 手动创建采购任务,可以进行批量新建,使用同步方式新建

请求方法: POST

请求参数: 
        tasks        M       list<dict>         
                [
                    {
                        spec_id          M           str         采购规格
                        plan_purchase_amount     M           float         采购量(基本单位)
                        setttle_supplier_id     M           str         供应商id
                        purchaser_id        O       int         采购员id(该供应商无默认采购员时可以不传)
                        time_config_id      O       str         报价单id
                        cycle_start_time    O       datetime    收货时间(如:2019-09-09 13:30:00)
                    }
                    。。。
                ]

响应: 不变

示例:
    request:
        https://station.guanmai.cn/purchase/task/create
        POST请求参数:
            tasks: [
                {"spec_id":  "D14393659",
                "plan_purchase_amount": 22,
                "setttle_supplier_id":  "T3455",
                "purchaser_id":    33,
                "time_config_id":       "ST4292",
                "cycle_start_time":     2019-09-09 13:30:00
                },
                {"spec_id":  "D14392239",
                "plan_purchase_amount": 33.33,
                "setttle_supplier_id":  "T1125",
                },
                    ]

    response:
        code: 0
        data: null
        msg: "ok"

逻辑:
    校验该sku是否存在
    校验该供应商是否可以供应该商品,沿用原来的逻辑

    创建采购任务

    特殊逻辑:
    用户选择了供应商之后、采购员选为该供应商的默认采购员(在purchase/task/get_create_source接口返回)
    如该供应商无默认采购员、则选为可从该供应商采购商品的采购员列表中的顺序第一位采购员(/purchase/task/optional_suppliers_purchasers拉取)
    同时支持用户进行采购员的更改

merchandise/spu/branch(修改)

接口描述: 搜索商品spu

请求方法: GET

请求参数: 
        不变

响应: 
    【
        {
            current_inventory(新增)       M           float           库存
        }
        。。。
    】

purchase/task/suppliers(新增)

接口描述: 传入spec id返回可采购该规格的供应商以及不可采购的供应商以及他们的默认采购员

请求方法: GET

请求参数: 
        spec_id        M       str         采购规格


响应: 
    【
        supply        M       list<dict>          可供应供应商
            [
                {
                    settle_supplier_id              M           str         供应商id
                    supplier_name                   M           str         供应商名称
                    default_purchaser_id            O         int         该供应商默认采购员id(没有时返回null)
                    default_purchaser_name          O         str         该供应商默认采购员名称(没有时返回null)
                }
            ]
        cant_supply        M       list<dict>          不可供应供应商
            [
                {
                    settle_supplier_id              M           str         供应商id
                    supplier_name                   M           str         供应商名称
                    default_purchaser_id            O         int         该供应商默认采购员id(没有时返回null)
                    default_purchaser_name          O         str         该供应商默认采购员名称(没有时返回null)
                }
            ]
    】

stock/purchase_sheet/create(新增)

接口描述: 后台新建时保存草稿、保存并新建两个按钮请求的接口


请求方法: POST

请求参数: 
        settle_supplier_id        M       str         供应商id
        purchaser_id        C       int         采购员id,保存并提交时采购员字段必填
        submit              M       bool        是否提交 0:不提交、保存草稿,1:保存并提交
        sheet_remark        O       str        单据备注(不能超过50个字)
        details
            [
                {
                    purchase_price           M      float       采购单价(单位:分)
                    spec_id                 M       str         采购规格id
                    purchase_amount         M       float       采购数量(基本单位)
                    goods_remark(新增)        O       str         商品备注不能超过50个字)
                }
                。。。
                ]

响应: 
    purchase_sheet_id           M           str         采购单据号

stock/purchase_sheet/modify(修改)

接口描述: 保存草稿,对于新增的商品,可以保存草稿
    需要至少有一个商品、并且新建采购单时可以传一个purchaser_id

新建采购单据的时候预采购金额的展示需要对应的改动

请求方法: POST

请求参数: 
        purchaser_id(新增)        O       int         采购员id(只针对后台建单的时候传)
        sheet_remark(新增)              O       str         单据备注(不能超过50个字)
        details
            [
                {
                    purchase_price
                    spec_id
                    purchase_amount
                    goods_remark(新增)        O       str         商品备注(不能超过50个字)
                }
                ]

响应: 
    不变

stock/purchase_sheet/submit(修改)

接口描述: 提交采购单(后端要进行部分逻辑的修改,包括、入库单的备注采用采购单据的备注)

请求方法: POST

请求参数: 
        不变

响应: 
    不变

逻辑:
    提交采购单据之前应该沿用现用逻辑:先请求一下stock/purchase_sheet/modify接口保存当前改动、
    再请求stock/purchase_sheet/submit接口进行提交

stock/purchase_sheet/get(修改)

接口描述: 获取采购单列表、source字段增加枚举

请求方法: get

请求参数: 
        不变

响应: 
    source(修改)      M       int         来源  0:业务平台  1:采购APP  2:后台建单


备注:
    新建采购单的商品无采购任务的计划采购数,会导致采购单据预采购金额显示异常,需要对应修改。

stock/purchase_sheet/details(修改)

接口描述: 采购单详情

请求方法: get

请求参数: 
        不变

响应: 
    purchase_sheet: {
                        sheet_remark(新增)          M           str    单据备注
                        source(新增)          M           int          来源  0:业务平台  1:采购APP  2:后台建单
                        purchaser_id(新增)          M           int          采购员id,只有后台建单的才会返回,可能为空
                        purchaser_name(新增)          M           str         采购员名称,只有后台建单的才会返回,可能为空
                    }
    tasks       M           list<dict>
                [
                    {
                        goods_remark(新增)          M           str         采购商品备注,没有时为空字符串
                        description(新增)          M           str         采购描述,没有时为空字符串
                    }
                。。。
                ]

示例:
    request
        https://station.guanmai.cn/stock/purchase_sheet/details?sheet_no=T4969-CGD-2019-09-10-00002

    response
        {
            code: 0,
            msg: "ok",
            data: {
                purchase_sheet: {
                                status: 3,
                                require_goods_sheet_status: 1,
                                create_time: "2019-09-10T10:24:30.345",
                                station_name: "总仓-李铭",
                                operator: "liming",
                                submit_time: null,
                                customer_id: "002",
                                supplier_name: "三只松鼠",
                                settle_supplier_id: "T33736"
                                sheet_remark: "这是新增的单据备注"
                                },
                tasks: [
                        {
                        release_id: 105910930,
                        purchase_unit_name: "包",
                        std_unit_name: "瓶",
                        spu_status: 1,
                        already_purchased_amount: 0,
                        ratio: 3,
                        status: 2,
                        release_time: "2019-09-10T10:24:09",
                        purchase_price: "100",
                        last_purchase_price: 1,
                        ref_price: 100,
                        purchase_amount: 3,
                        supplier_purchase_avg_price: "7.38",
                        category_name_2: "一只椰子",
                        pinlei_name: "一只椰子",
                        spec_id: "D18004365",
                        address: [
                                {
                                sort_id: 1,
                                plan_amount: 3,
                                remark: "",
                                address_id: "268417",
                                suggest_purchase_num: 0,
                                res_name: "aaa不准删"
                                }
                                ],
                        stock: 8,
                        category_name_1: "一只椰子",
                        spec_name: "测试牛奶1|3瓶/包",
                        id: "5d77095e7a60f654e5fddc0d",
                        plan_amount: 3,
                        suggest_purchase_num: -5,

                        goods_remark: "这是新增的采购商品备注、同订单备注"
                        description: "这是新增的采购描述"
                        }
                ],
                in_stock_sheet_id: ""
                }
            }

备注:
    新建采购单的商品无采购任务的计划采购数,会导致采购单据预采购金额显示异常,需要对应修改。

purchase_spec/create(修改)

接口描述: 新建采购规格、增加采购描述字段

请求方法: post

请求参数: 
        description(新增)             O           str             采购描述

响应: 
        不变

示例:
    pass

purchase_spec/search(修改)

接口描述: 采购规格详情、增加采购描述字段

请求方法: get

请求参数: 
        不变

响应: 
    purchase_spec       M           list<dict>
                [
                    {
                        description(新增)          M           str         采购描述,没有时为空字符串
                    }
                。。。
                ]

示例:
    pass

purchase_spec/update(修改)

接口描述: 更新采购规格、增加采购描述字段

请求方法: post

请求参数: 
        description(新增)             O           str             采购描述

响应: 
        不变

示例:
    pass

purchase/task/search(修改)

接口描述: 查看采购任务、增加采购描述字段

请求方法: post

请求参数: 
        不变

响应: 
       【
            {
                description(新增)             M           str             采购描述
            }
        】

示例:
    pass

purchase/task/print(修改)

接口描述: 查看采购任务、增加采购描述字段

请求方法: post

请求参数: 
        不变

响应: 
       【
            {
                tasks: [
                    {description(新增)             M           str             采购描述
                    purchase_sheet_id(新增)             O           str             采购单据号
                    }
                    ...
                    ]
            }
        】

示例:
    request:
        purchase/task/print?begin_time=2019-09-09+00%3A00%3A00&end_time=2019-09-09+00%3A00%3A00&print_what=task&q_type=1&is_print=1

    response:
    {
        code: 0,
        msg: "ok",
        data: [
                {
                    tasks: [
                    {
                        pinlei_name: "白菜",
                        sku_name: "小白菜【斤】",
                        category1_name: "蔬菜",
                        std_unit_name: "斤",
                        addresses: [
                        {
                        plan_purchase_amount: 33,
                        sort_id: "",
                        sale_unit_name: "斤",
                        remark: "",
                        sale_ratio: 1,
                        address_id: "",
                        res_name: ""
                        }
                        ],
                        price: 430,
                        stock: 13,
                        category2_name: "叶菜类",
                        sale_ratio: 1,
                        sale_unit_name: "斤",
                        address_count: 1,
                        suggest_purchase_num: 19.999999999989086

                        description: "新增的采购描述字段"
                    },
                    ...
                ]
    }

采购描述受影响的其他改动接口

设置打印模板相关接口在采购条目中增加采购描述description字段

purchase/task/print_no_login(采购任务分享)

stock/purchase_sheet/details(采购单据打印)

stock/purchase_sheet/details_no_login(采购单据分享)

stock/in_stock_sheet/material/print (入库单打印)

拉取全部供应商接口:station/stock/settle_supplier/get

拉取全部采购员接口:purchase/purchaser/search

新建采购任务拉取spu的接口:merchandise/spu/branch

根据spu id拉取采购规格的接口:purchase/task/get_create_source

采购单据补货拉取采购商品的接口: stock/settle_supplier/supply_sku

拉取一个供应商下有关联关系的采购员接口:/purchase/task/optional_suppliers_purchasers

/purchase/task/optional_suppliers_purchasers(老接口供参考)

接口描述: 批量修改失败时拉取对应的供应商或者采购员,传spec_id拉可选的供应商,传settle_supplier_id拉取可选的采购员

请求方法: get

请求参数: 
        spec_id        C       str         采购规格(采购规格和供应商id二选一)
        settle_supplier_id        C       str         供应商id

响应:     {
        "code": 0,
        "msg": "ok",
        "data": {
                    optional_suppliers:         C       str             可选的供应商

                    [
                            {settle_supplier_id          M           str           供应商id
                            supplier_name          M           str           供应商名称
                            }
                            ...
                    ]
                    optional_purchasers:         C       str            可选的采购员

                    [   
                            {purchaser_id          M           str           采购员id
                            purchaser_name          M           str           采购员名称
                            }
                            ...
                    ]
        }

stock/settle_supplier/supply_sku 采购单据增加条目(老接口供参考)

接口描述: 采购单据增加条目,返回当前供应商和其他供应商的采购规格,
其他供应商的采购规格里面的供应商返回的是当前供应商信息,用于查询七天采购均价(业务逻辑)

请求方法: GET

请求参数: 
        settle_supplier_id          M           str         供应商id
        name                        M           str         搜索关键词

响应: 
    {
        target_supplier          M          list<dict>      当前供应商数据
        [
            {
                'settle_supplier_name': M str   供应商名称
                'sale_ratio': M float   采购ratio
                'spec_name': M str  采购规格名称
                'spu_name': M str   spu名称
                'spec_id': M str    采购规格id
                'sale_unit_name': M str 采购单位
                'std_unit_name': M str  基本单位
                'station_id': M str 站点id
                'settle_supplier_id': M str 供应商id
                'purchase_price_limit': M float
                'category_id_1': M str  一级分类
                'category_id_1_name': M str
                'category_id_2': M str二级分类
                'category_id_2_name': M str,
                'price': M float    当前供应商的最近询价
                'plan_amount': None
                'stock':M float 库存
                'description':M float   采购描述
                'last_in_stock_price': M float  供应商最近入库价
                'last_purchase_price': M float  供应商最近采购价
                'last_quote_price': M float 供应商最近询价
                'latest_in_stock_price': M float    最近入库价
                'latest_purchase_price': M float    最近采购价
                'latest_quote_price': M float   最近询价
                'stock_avg_price': M float  库存均价
            }
       ]   
        other_supplier          M          list<dict>      其他供应商数据
       [
           {
                'settle_supplier_name': M str   供应商名称
                'sale_ratio': M float   采购ratio
                'spec_name': M str  采购规格名称
                'spu_name': M str   spu名称
                'spec_id': M str    采购规格id
                'sale_unit_name': M str 采购单位
                'std_unit_name': M str  基本单位
                'station_id': M str 站点id
                'settle_supplier_id': M str 供应商id
                'purchase_price_limit': M float
                'category_id_1': M str  一级分类
                'category_id_1_name': M str
                'category_id_2': M str二级分类
                'category_id_2_name': M str,
                'price': M float    当前供应商的最近询价
                'plan_amount': None
                'stock':M float 库存
                'description':M float   采购描述
                'last_in_stock_price': M float  供应商最近入库价
                'last_purchase_price': M float  供应商最近采购价
                'last_quote_price': M float 供应商最近询价
                'latest_in_stock_price': M float    最近入库价
                'latest_purchase_price': M float    最近采购价
                'latest_quote_price': M float   最近询价
                'stock_avg_price': M float  库存均价
           }
       ]
        }

权限部分

在xnn_core_product2库的auth_permission权限表中新增一条权限

name                name_en                             codename                    level2_id

新建采购单据           Add Create Purchase Sheet                 add_create_purchase_sheet          30

插入语句为:
    INSERT INTO `auth_permission` (`name`, `name_en`, `content_type_id`, `codename`, `level2_id`)
    VALUES
        ('新建采购单据', 'Create Purchase Sheet', 63, 'add_create_purchase_sheet', 30);


开发计划(6天)

2019.09.11 修改老接口purchase/task/create(实际是个新接口、名字沿用原来的)

2019.09.12 新增stock/purchase_sheet/create接口、修改purchase/task/get_create_source接口

2019.09.16 修改stock/purchase_sheet/modify、stock/purchase_sheet/submit接口

2019.09.17 修改stock/purchase_sheet/get、stock/purchase_sheet/details接口

2019.09.18 采购单据可以拉取其他供应商的商品逻辑灰度后合进来、调整相关的逻辑

2019.09.19 修改采购描述相关接口