Advertisement
Guest User

Untitled

a guest
Feb 9th, 2016
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.59 KB | None | 0 0
  1. средстоимость = (текущий остаток*текущая себестомость+new.колво+new.цена)/(текущий остаток+new.колво)
  2.  
  3. 1)Приход ItemA - 10units - 10$ = GOODSREMAINS qty=10 TGOODS GDSAVGCOST=10
  4.  
  5. 2)Продажа ItemA - 4units - 25$ = GOODSREMAINS qty=6 TGOODS GDSAVGCOST=10
  6.  
  7. 3)Приход ItemA - 10units - 15$ = GOODSREMAINS qty=16 TGOODS GDSAVGCOST=13,13
  8. 4)Приход ItemA - 10units - 20$ = GOODSREMAINS qty=26 TGOODS GDSAVGCOST=15,77
  9.  
  10. declare variable CURRENT_QTY D_QTY;
  11. declare variable CURRENT_COST D_AMT;
  12. declare variable NEW_COST D_AMT;
  13. begin
  14.  
  15. IF (INSERTING) THEN
  16. begin
  17. CURRENT_QTY =0;
  18. CURRENT_COST =0;
  19. NEW_COST =0;
  20.  
  21. select sum(coalesce(qty,0))
  22. from GOODSREMAINS
  23. where GOODSID=:NEW.GDSID
  24. INTO :CURRENT_QTY;
  25.  
  26. select coalesce(GDSAVGCOST,0)
  27. from TGOODS
  28. where GDSID=:NEW.GDSID
  29. INTO :CURRENT_COST;
  30.  
  31. if (exists(select goodsid from goodsremains where goodsid = :NEW.GDSID and storeid = :NEW.STOREID and boxnumber = :NEW.GDSCOD)) then
  32. begin
  33. UPDATE GOODSREMAINS
  34. SET GOODSREMAINS.QTY = GOODSREMAINS.QTY + :NEW.RGSTRITEMQTY * :NEW.TRANSTYPE
  35. WHERE GOODSREMAINS.GOODSID = :NEW.GDSID
  36. AND GOODSREMAINS.BOXNUMBER = :NEW.GDSCOD
  37. AND GOODSREMAINS.STOREID = :NEW.STOREID;
  38. end
  39. else
  40. begin
  41. insert into goodsremains (
  42. goodsid,
  43. storeid,
  44. boxnumber,
  45. qty)
  46. VALUES (:NEW.GDSID,:NEW.STOREID,:NEW.GDSCOD,:NEW.RGSTRITEMQTY * :NEW.TRANSTYPE);
  47. end
  48.  
  49. NEW_COST = (:CURRENT_QTY*:CURRENT_COST+:NEW.RGSTRITEMQTY*:NEW.RGTRITEMPURCHAMT)/(:NEW.RGSTRITEMQTY+:CURRENT_QTY);
  50.  
  51. update TGOODS
  52. set GDSAVGCOST=:NEW_COST
  53. where GDSID=:NEW.GDSID;
  54.  
  55. end
  56. ELSE IF (DELETING) THEN
  57. BEGIN
  58. CURRENT_QTY =0;
  59. CURRENT_COST =0;
  60. NEW_COST =0;
  61.  
  62. select sum(coalesce(qty,0))
  63. from GOODSREMAINS
  64. where GOODSID=:OLD.GDSID
  65. INTO :CURRENT_QTY;
  66.  
  67. select coalesce(GDSAVGCOST,0)
  68. from TGOODS
  69. where GDSID=:OLD.GDSID
  70. INTO :CURRENT_COST;
  71.  
  72. UPDATE GOODSREMAINS
  73. SET GOODSREMAINS.QTY = GOODSREMAINS.QTY - :OLD.RGSTRITEMQTY * :OLD.TRANSTYPE
  74. WHERE GOODSREMAINS.GOODSID = :OLD.GDSID
  75. AND GOODSREMAINS.BOXNUMBER = :OLD.GDSCOD
  76. AND GOODSREMAINS.STOREID = :OLD.STOREID;
  77.  
  78.  
  79.  
  80. NEW_COST = ((:CURRENT_QTY-:OLD.RGSTRITEMQTY * :OLD.TRANSTYPE)*:CURRENT_COST-:OLD.RGSTRITEMQTY*:OLD.RGTRITEMPURCHAMT)/:CURRENT_QTY+:OLD.RGSTRITEMQTY;
  81.  
  82. update TGOODS
  83. set GDSAVGCOST=:NEW_COST
  84. where GDSID=:OLD.GDSID;
  85. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement