用友U8修改货位现存量

由于从其他系统中传递过来的采购入库单未做货位验证,将错误货位写入数据库,导致料号货位错误,做货位调整单提示货位非法,采用如下方法,修改为正确的货位之后,重新写入货位存量表。

SELECT * FROM   dbo.InvPosition   WHERE  cposcode  ='d'


SELECT * FROM   dbo.InvPositionSum   WHERE  cposcode  ='d'


UPDATE   dbo.InvPosition   set cposcode  ='DA00-000'  WHERE  cposcode  ='d'

SELECT * FROM dbo.Position  WHERE cposcode LIKE 'd%'

BEGIN TRAN;

TRUNCATE TABLE InvPositionSum;

--update  set  cbatch='' from   InvPosition p left join  Inventory i on  p.cInvCode=i.cinvcode  where isnull (bInvBatch,0) =0


--select *  into AA_BatchPropertybak2021 from  AA_BatchProperty
--delete from   b from  AA_BatchProperty b  left join  Inventory i  on b.cinvcode =i.cinvcode where bInvBatch=0

INSERT INTO InvPositionSum
(
    iQuantity,
    inum,
    cWhCode,
    cPosCode,
    cInvCode,
    cBatch,
    cFree1,
    cFree2,
    cFree3,
    cFree4,
    cFree5,
    cFree6,
    cFree7,
    cFree8,
    cFree9,
    cFree10,
    cvmivencode,
    iTrackid,
    cInVouchType
)
SELECT SUM(   (CASE
                   WHEN Inv.bRdFlag = 1 THEN
                       1
                   WHEN Inv.bRdFlag = 0 THEN
                       -1
                   ELSE
                       0
               END
              ) * Inv.iQuantity
          ),
       SUM(   (CASE
                   WHEN Inv.bRdFlag = 1 THEN
                       1
                   WHEN Inv.bRdFlag = 0 THEN
                       -1
                   ELSE
                       0
               END
              ) * Inv.iNum
          ),
       Inv.cWhCode,
       Inv.cPosCode,
       Inv.cInvCode,
       ISNULL(Inv.cBatch, N''),
       ISNULL(Inv.cFree1, N''),
       ISNULL(Inv.cFree2, N''),
       ISNULL(Inv.cFree3, N''),
       ISNULL(Inv.cFree4, N''),
       ISNULL(Inv.cFree5, N''),
       ISNULL(Inv.cFree6, N''),
       ISNULL(Inv.cFree7, N''),
       ISNULL(Inv.cFree8, N''),
       ISNULL(Inv.cFree9, N''),
       ISNULL(Inv.cFree10, N''),
       ISNULL(Inv.cvmivencode, N''),
       CASE
           WHEN ISNULL(I.bTrack, 0) = 1 THEN
               ISNULL(Inv.iTrackId, 0)
           ELSE
               0
       END,
       CASE
           WHEN ISNULL(I.bTrack, 0) = 1 THEN
               ISNULL(Inv.cInVouchType, N'')
           ELSE
               N''
       END
FROM InvPosition Inv
    INNER JOIN Inventory I
        ON Inv.cInvCode = I.cInvCode
GROUP BY Inv.cWhCode,
         Inv.cPosCode,
         Inv.cInvCode,
         ISNULL(Inv.cBatch, N''),
         ISNULL(Inv.cFree1, N''),
         ISNULL(Inv.cFree2, N''),
         ISNULL(Inv.cFree3, N''),
         ISNULL(Inv.cFree4, N''),
         ISNULL(Inv.cFree5, N''),
         ISNULL(Inv.cFree6, N''),
         ISNULL(Inv.cFree7, N''),
         ISNULL(Inv.cFree8, N''),
         ISNULL(Inv.cFree9, N''),
         ISNULL(Inv.cFree10, N''),
         ISNULL(Inv.cvmivencode, N''),
         CASE
             WHEN ISNULL(I.bTrack, 0) = 1 THEN
                 ISNULL(Inv.iTrackId, 0)
             ELSE
                 0
         END,
         CASE
             WHEN ISNULL(I.bTrack, 0) = 1 THEN
                 ISNULL(Inv.cInVouchType, N'')
             ELSE
                 N''
         END;

UPDATE Inv
SET cMassUnit = CS.cMassUnit,
    iMassDate = CS.iMassDate,
    dMadeDate = CS.dMdate,
    dVDate = CS.dVDate,
    iExpiratDateCalcu = CS.iExpiratDateCalcu,
    cExpirationdate = CS.cExpirationdate,
    dExpirationdate = CS.dExpirationdate
FROM InvPositionSum Inv
    INNER JOIN CurrentStock CS
        ON Inv.cInvCode = CS.cInvCode
           AND Inv.cWhCode = CS.cWhCode
           AND ISNULL(Inv.cBatch, '') = ISNULL(CS.cBatch, '')
           AND ISNULL(Inv.cFree1, '') = ISNULL(CS.cFree1, '')
           AND ISNULL(Inv.cFree2, '') = ISNULL(CS.cFree2, '')
           AND ISNULL(Inv.cFree3, '') = ISNULL(CS.cFree3, '')
           AND ISNULL(Inv.cFree4, '') = ISNULL(CS.cFree4, '')
           AND ISNULL(Inv.cFree5, '') = ISNULL(CS.cFree5, '')
           AND ISNULL(Inv.cFree6, '') = ISNULL(CS.cFree6, '')
           AND ISNULL(Inv.cFree7, '') = ISNULL(CS.cFree7, '')
           AND ISNULL(Inv.cFree8, '') = ISNULL(CS.cFree8, '')
           AND ISNULL(Inv.cFree9, '') = ISNULL(CS.cFree9, '')
           AND ISNULL(Inv.cFree10, '') = ISNULL(CS.cFree10, '')
           AND ISNULL(Inv.cvmivencode, '') = ISNULL(CS.cVMIVenCode, '');

           COMMIT

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值