用友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

你可能感兴趣的:(用友,linq,p2p,sql)