需求:借出单转销售,在U8系统中是自动生成发货单,销售出库单并自动审核,有发货记录无销售订单记录,需求有销售订单记录。在借出转换单上做触发器时,发现借出转换单表HY_DZ_BorrowOutChange无法操作,不知道什么原因。所以采用存储过程定时执行,采用此语句,在发货单中整单关联能关联到销售订单。语句如下:

ALTER PROCEDURE P_Quck_JCZX
WITH ENCRYPTION
AS
DECLARE @cSOCode NVARCHAR(500); --销售订单号
DECLARE @ID INT; --主表ID
DECLARE @iSOsID INT; --销售订单子表标识2 
DECLARE @iFatherId INT; --单据编号生成控制表中主表ID流水号
DECLARE @iChildId INT; --单据编号生成控制表中子表ID流水号
DECLARE @Total INT; --发货单表体行数
DECLARE @iRowNo INT; --行号
DECLARE @cDLCode NVARCHAR(500); --发货单号
DECLARE @err INT; --错误数
SET @err = 0;
SET @cDLCode =
(
    SELECT TOP 1
           cDLCode
    FROM dbo.DispatchList
    WHERE ISNULL(cSourceCode, '') <> ''
          AND ISNULL(cDefine1, '') = ''
          AND dDate>'2022-03-01'
    ORDER BY DLID
);--每次取一条数据执行,在自定义项1中打上标记,作为条件判断,发货单表头中cSourceCode字段为借出转换单号,
--此字段不为空说明是从借出转换单生成的发货单,自定义项1打上标记说明已经执行生成销售订单
SET @cSOCode = N'SCZX' + CAST(DATEDIFF(SECOND, '1970-01-01 08:00:00', dateadd(hh,-1,getdate())) AS NVARCHAR(100));
SET @ID =
(
    SELECT '1' + RIGHT('000000000' + CAST(
                                     (
                                         SELECT iFatherId + 1
                                         FROM UFSystem.dbo.UA_Identity
                                         WHERE cAcc_Id = '998'
                                               AND cVouchType = 'Somain'
                                     ) AS NVARCHAR), 9)
);

SET @iSOsID =
(
    SELECT '1' + RIGHT('000000000' + CAST(
                                     (
                                         SELECT iChildId
                                         FROM UFSystem.dbo.UA_Identity
                                         WHERE cAcc_Id = '998'
                                               AND cVouchType = 'Somain'
                                     ) AS NVARCHAR), 9)
);

SET @iFatherId =
(
    SELECT iFatherId
    FROM UFSystem.dbo.UA_Identity
    WHERE cAcc_Id = '998'
          AND cVouchType = 'Somain'
);

SET @iChildId =
(
    SELECT iChildId
    FROM UFSystem.dbo.UA_Identity
    WHERE cAcc_Id = '998'
          AND cVouchType = 'Somain'
);
SET @Total =
(
    SELECT MAX(irowno)
    FROM dbo.DispatchList
        JOIN dbo.DispatchLists
            ON DispatchLists.DLID = DispatchList.DLID
               AND DispatchList.cDLCode = @cDLCode
);

BEGIN TRANSACTION;

--插入销售订单主表

INSERT INTO dbo.SO_SOMain
(
    cSTCode,         --销售类型编码
    dDate,           --单据日期
    cSOCode,         --销售订单号
    cCusCode,        --客户编码
    cDepCode,        --部门编码
    cPersonCode,     --业务员编码
    cCusOAddress,    --发货地址
    cexch_name,      --币种名称
    iExchRate,       --汇率
    iTaxRate,        --表头税率
    iStatus,         --状态(0-未审核;1-已审核)
    cMaker,          --制单人
    cVerifier,       --审核人
    cCusName,        --客户名称
    ID,              --销售订单主表标识
    iVTid,           --单据模版号
    cBusType,        --业务类型
    dPreMoDateBT,    --预完工日期
    dPreDateBT,      --预发货日期
    caddcode,        --发货地址编码
    iverifystate,    --审核状态
    iswfcontrolled,  --是否控制工作流
    dverifydate,     --审核日期
    dcreatesystime,  --制单时间
    dverifysystime,  --审核时间
    cinvoicecompany, --开票单位编码
    cMemo            --备注
)
SELECT cSTCode,
       dateadd(hh,-1,dateadd(hh,-1,getdate())), --时间往前推一个小时
       @cSOCode,
       cCusCode,
       cDepCode,
       cPersonCode,
       cShipAddress,
       cexch_name,
       iExchRate,
       iTaxRate,
       1,
       cMaker,
       cVerifier,
       cCusName,
       @ID,
       --131447,
       95,
       cBusType,
       dateadd(hh,-1,getdate()),
       dateadd(hh,-1,getdate()),
       N'0001',
       0,
       0,
       dateadd(hh,-1,getdate()),
       dateadd(hh,-1,getdate()),
       dateadd(hh,-1,getdate()),
       cinvoicecompany,
       '借出转销售生单'
FROM dbo.DispatchList
WHERE cDLCode = @cDLCode;

SET @err = @err + @@ERROR;

--插入销售订单子表

SET @iRowNo = 1;
WHILE @iRowNo <= @Total
BEGIN
    INSERT INTO dbo.SO_SODetails
    (
        --AutoID,        --销售订单子表标识 
        cSOCode,       --销售订单号 
        cInvCode,      --存货编码
        dPreDate,      --预发货日期
        iQuantity,     --数量
        iUnitPrice,    --原币无税单价
        iTaxUnitPrice, --原币含税单价
        iMoney,        --原币无税金额
        iTax,          --原币税额
        iSum,          --原币价税合计
        iDisCount,     --原币折扣额
        iNatUnitPrice, --本币无税单价
        iNatMoney,     --本币无税金额
        iNatTax,       --本币税额
        iNatSum,       --本币价税合计
        iNatDisCount,  --本币折扣额
        iFHQuantity,   --累计发货数量
        iFHMoney,      --累计原币发货金额
        iSOsID,        --销售订单子表标识2
        KL,            --扣率
        KL2,           --二次扣率
        cInvName,      --存货名称
        iTaxRate,      --税率
        ID,            --销售订单主表标识
        dPreMoDate,    --预完工日期
        iRowNo,        --行号
        foutquantity,  --出库数量
        idemandtype,   --需求跟踪方式(1-销售订单行号;4-需求分类号5-销售订单号)
        fVeriDispQty,  --已审核订货数量
        fVeriDispSum,  --已审核订货原币金额
        bsaleprice     --报价含税标识
    )
    SELECT @cSOCode,
           cInvCode,
           dateadd(hh,-1,getdate()),
           iQuantity,
           iUnitPrice,
           iTaxUnitPrice,
           iMoney,
           iTax,
           iSum,
           0.0000,
           iNatUnitPrice,
           iNatMoney,
           iNatTax,
           iNatSum,
           0.0000,
           iQuantity,
           iSum,
           @iSOsID + @iRowNo,
           KL,
           KL2,
           cInvName,
           iTaxRate,
           @ID,
           dateadd(hh,-1,getdate()),
           @iRowNo,
           iQuantity,
           1,
           iQuantity,
           iSum,
           1
    FROM dbo.DispatchLists
    WHERE DLID =
    (
        SELECT DLID FROM DispatchList WHERE cDLCode = @cDLCode
    )
          AND DispatchLists.irowno = @iRowNo;
    SET @err = @err + @@ERROR;

UPDATE dbo.DispatchList
    SET cSOCode = @cSOCode,
        cDefine1 = @cSOCode
    WHERE cDLCode = @cDLCode;

SET @err = @err + @@ERROR;

UPDATE dbo.DispatchLists
    SET cSoCode = @cSOCode,
        iSOsID = @iSOsID + @iRowNo
    WHERE DLID =
    (
        SELECT DLID FROM dbo.DispatchList WHERE cDLCode = @cDLCode
    )
          AND DispatchLists.irowno = @iRowNo;
    SET @iRowNo = @iRowNo + 1;
    SET @err = @err + @@ERROR;
END;

--更新单据表头表体ID号
UPDATE UFSystem.dbo.UA_Identity
SET iFatherId = @iFatherId + 1,
    iChildId = @iChildId + @Total
WHERE cAcc_Id = '998'
      AND cVouchType = 'Somain';
SET @err = @err + @@ERROR;
IF @err <> 0
BEGIN
    ROLLBACK TRANSACTION;
END;
ELSE
BEGIN

COMMIT TRANSACTION;
END;

U8根据发货单生成销售订单(反向生单)相关推荐

  1. 3.20 采购订单自动生成销售订单

    3.20.1   业务方案描述 对于同一企业集团内部的不同法人之间,存在需要调让物料,买方和卖方采用买卖方式进行业务运作和财务核算. 对于买方,按照内部商定的协议价格创建采购订单,按照采购订单收货,按 ...

  2. 批量生成销售订单、退货订单

    生成一般销售订单和退货订单所要使用的BAPI不同, 一般销售订单: BAPI_SALESORDER_CREATEFROMDAT2 退货订单: BAPI_CUSTOMERRETURN_CREATE 二者 ...

  3. 销售发货单细行【订单编号】引用销售订单主表【编号】解决方案

    客户需求: 销售发货单细行的[订单编号]引用销售订单主表[编号],如下图 解决方案: 由于销售发货单细行有字段BaseDocNum记录销售订单的DocNum. 所以到web控件设置里面添加订单编号这个 ...

  4. 生产订单BOM、销售订单BOM、标准BOM

    生产订单BOM.销售订单BOM.标准BOM 生产订单BOM.销售订单BOM.标准BOM 生产订单BOM ,跑生产订单时,子组件体现作用 . 销售订单BOM ,跑MRP 时体现子组件的作用 . rcdf ...

  5. 旺店通·企业奇门与用友BIP对接集成查询退换管理连通销售退货单个保存(退换货生成销售退货(线下)-测试重传)

    源系统:旺店通·企业奇门 旺店通是北京掌上先机网络科技有限公司旗下品牌,国内的零售云服务提供商,基于云计算SaaS服务模式,以体系化解决方案,助力零售企业数字化智能化管理升级.为零售电商企业的订单管理 ...

  6. 如何在S/4HANA生产订单创建上下文里拿到前置销售订单信息

    我写了一段ABAP程序,放在我的github上: https://github.com/i042416/KnowlegeRepository/blob/master/ABAP/S4/ZCREATE_S ...

  7. sap销售发货的流程_SAP销售订单操作步骤-最新

    <SAP销售订单操作步骤-最新>由会员分享,可在线阅读,更多相关<SAP销售订单操作步骤-最新(8页珍藏版)>请在人人文库网上搜索. 1.SAP销售订单引用预订单标准操作步骤操 ...

  8. SAP script 自动创建销售订单机器人,协同Excel

    首先要开启SAP的脚本 参考 ​​​​​​SAP系统开启脚本录制和回放功能 - 简书 参考一边生成销售订单的过程 注意不要有额外的操作 记录下脚本 If Not IsObject(applicatio ...

  9. 金蝶K3销售订单数据字典

    字段名称    字段描述 FAreaPS    销售范围: FBillCaption    销售订单 FBillerID    制单: FBillNo    内部订单号: FBrID    制单机构: ...

  10. U811.1接口EAI系列之二--生成销售出库单调用U8的EAI通用处理方法--PowerBuilder语言...

    1.销售系统销售出库,更新U811.1材料库存的EAI的XML生成. 2.主要根据U8配置会生成出库单和同时是否更新库存量,还是更新现存量等等. 3.具体参考代码如下: 作者:王春天 2013-11- ...

最新文章

  1. 如何将 Spring Boot Actuator 的指标信息输出到 InfluxDB 和 Prometheus
  2. 2019编译ffepeg vs_2020/5-Win10下ffmpeg最简编译方法
  3. 中文文本纠错 算例实现(有算例完整代码)
  4. Hadoop掀起大数据革命 三巨头齐发力
  5. Flink SQL 在网易云音乐的产品化实践
  6. EFCore Lazy Loading + Inheritance = 干净的数据表 (二)
  7. Visual Studio—— IntelliSense: #error 指令: Please use the /MD switch for _AFXDLL builds
  8. Linux静态路由相关
  9. JDK 8_jstack命令使用
  10. Python 语言程序设计(5-1)函数的定义与使用
  11. 关于虚拟主机软件配置的问题
  12. c语言怎样设计程序界面,「分享」C语言如何编写图形界面
  13. ps技巧学习之常用8种抠图方法
  14. java正则表达式双引号_java正则表达式去掉双引号
  15. 手机植入木马可以监视你的一举一动,黑客是怎样入侵别人手机的?
  16. 局域网bs虚拟服务器怎么创建,搭建局域网地图服务器
  17. IE8 以下版本的浏览器的盒子模型有什么不一样的地方?
  18. README.txt
  19. android lcm,MTK Android Driver :lcm
  20. 0428-团队项目2

热门文章

  1. 帝国 php 7.0 默认 后台用户名及认证码,帝国CMS忘记后台登陆用户名 密码 认证码 安全提问答案 数据库用户名及密码的解决方法 | 坐倚北风...
  2. python开发工程师招聘要求
  3. 题解 CF32C 【Flea】
  4. Linux gre tunnel 端口,两台Linux通过GRE tunnel的隧道实现互通 — 并且改变其中一台的回程路由...
  5. 中南大学计算机学院2021复试名单,2021年中南大学研究生拟录取名单整理汇总(各学院)...
  6. Java.util.ArrayList详解
  7. 2013年大学英语专升本作文——Should One Expect a Reward When Doing a Good Deed?【标准答案、精品范文答案】
  8. macbook插入耳机不出声
  9. 称重传感器(体脂体重模块)应用及特点
  10. 梅特勒托利多电子秤显示EEP服务器错误,托利多电子秤故障排除和维修方法