f_workremind.srf 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. $PBExportHeader$f_workremind.srf
  2. global type f_workremind from function_object
  3. end type
  4. forward prototypes
  5. global function integer f_workremind (long arg_scid, long arg_funcid, long arg_powerid, long arg_storageid, string arg_powername, long arg_qty, boolean arg_ifcommit, boolean arg_ifreset)
  6. end prototypes
  7. global function integer f_workremind (long arg_scid, long arg_funcid, long arg_powerid, long arg_storageid, string arg_powername, long arg_qty, boolean arg_ifcommit, boolean arg_ifreset);Int rslt = 1
  8. IF arg_ifreset THEN
  9. UPDATE sys_workremind
  10. SET powername = :arg_powername,
  11. qty = :arg_qty
  12. WHERE scid = :arg_scid
  13. AND storageid = :arg_storageid
  14. and funcid = :arg_funcid;
  15. IF sqlca.SQLCode = 0 THEN
  16. IF sqlca.SQLNRows = 0 THEN
  17. INSERT INTO sys_workremind
  18. (scid,funcid,powerid,storageid,powername,qty)
  19. Values(:arg_scid,:arg_funcid,:arg_powerid,:arg_storageid,:arg_powername,:arg_qty);
  20. IF sqlca.SQLCode <> 0 THEN
  21. rslt = 0
  22. GOTO ext
  23. END IF
  24. END IF
  25. ELSE
  26. rslt = 0
  27. GOTO ext
  28. END IF
  29. ELSE
  30. UPDATE sys_workremind
  31. SET qty = qty + :arg_qty
  32. WHERE scid = :arg_scid
  33. AND funcid = :arg_funcid
  34. AND storageid = :arg_storageid;
  35. IF sqlca.SQLCode <> 0 THEN
  36. rslt = 0
  37. GOTO ext
  38. END IF
  39. END IF
  40. ext:
  41. IF rslt = 0 THEN
  42. ROLLBACK;
  43. ELSEIF rslt = 1 AND arg_ifcommit THEN
  44. COMMIT;
  45. END IF
  46. RETURN rslt
  47. end function