f_get_cmp_addqty.srf 4.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. $PBExportHeader$f_get_cmp_addqty.srf
  2. global type f_get_cmp_addqty from function_object
  3. end type
  4. forward prototypes
  5. global function decimal f_get_cmp_addqty (string arg_str, decimal arg_qty, decimal arg_addqty, string arg_status, string arg_woodcode, string arg_pcode, string arg_ls_mtrlsectype, string arg_ls_zxmtrlmode, decimal arg_dec_danpackqty, decimal arg_dec_packqty, long arg_mtrlid)
  6. end prototypes
  7. global function decimal f_get_cmp_addqty (string arg_str, decimal arg_qty, decimal arg_addqty, string arg_status, string arg_woodcode, string arg_pcode, string arg_ls_mtrlsectype, string arg_ls_zxmtrlmode, decimal arg_dec_danpackqty, decimal arg_dec_packqty, long arg_mtrlid);String ls_str,s_rtn
  8. Int ll_star,ll_end,ll_dy
  9. datastore ds_pricestr
  10. Decimal arg_value_dec,de_rtn
  11. ds_pricestr = Create datastore
  12. ds_pricestr.DataObject = 'ds_pricestr_cmpl'
  13. ds_pricestr.SetTransObject(sqlca)
  14. ds_pricestr.Retrieve()
  15. arg_str=trim(arg_str)
  16. ll_dy=pos(arg_str,'=')
  17. ls_str=right(arg_str,len(arg_str) - ll_dy)//格式 数量=自定义文本1 + 辅数 * 4
  18. arg_str=ls_str
  19. //SELECT Top 1 Replace( :arg_str,'配置1',:arg_woodcode) Into :arg_str From u_user;
  20. //SELECT Top 1 Replace( :arg_str,'配置2',:arg_pcode) Into :arg_str From u_user;
  21. //SELECT Top 1 Replace( :arg_str,'配置',:arg_status) Into :arg_str From u_user;
  22. //SELECT Top 1 Replace( :arg_str,'自定义文本1',:arg_ls_mtrlsectype) Into :arg_str From u_user;
  23. //SELECT Top 1 Replace( :arg_str,'自定义文本2',:arg_ls_zxmtrlmode) Into :arg_str From u_user;
  24. //
  25. //SELECT Top 1 Replace( :arg_str,:sys_option_change_woodcode,:arg_woodcode) Into :arg_str From u_user;
  26. //SELECT Top 1 Replace( :arg_str,:sys_option_change_pcode,:arg_pcode) Into :arg_str From u_user;
  27. //SELECT Top 1 Replace( :arg_str,:sys_option_change_status,:arg_status) Into :arg_str From u_user;
  28. //SELECT Top 1 Replace( :arg_str,:sys_option_change_mtrlsectype,:arg_ls_mtrlsectype) Into :arg_str From u_user;
  29. //SELECT Top 1 Replace( :arg_str,:sys_option_change_zxmtrlmode,:arg_ls_zxmtrlmode) Into :arg_str From u_user;
  30. //
  31. //
  32. //SELECT Top 1 Replace( :arg_str,'数量',:arg_qty) Into :arg_str From u_user;
  33. //SELECT Top 1 Replace( :arg_str,'辅数',:arg_addqty) Into :arg_str From u_user;
  34. //
  35. //
  36. //SELECT Top 1 Replace( :arg_str,'单包装数',:arg_dec_danpackqty) Into :arg_str From u_user;
  37. //SELECT Top 1 Replace( :arg_str,'包装数',:arg_dec_packqty) Into :arg_str From u_user;
  38. SELECT Top 1 Replace( :arg_str,'配置1','(' +cast(:arg_woodcode as varchar(50))+ ')') Into :arg_str From u_user;
  39. SELECT Top 1 Replace( :arg_str,'配置2','(' +cast(:arg_pcode as varchar(50))+ ')') Into :arg_str From u_user;
  40. SELECT Top 1 Replace( :arg_str,'配置','(' +cast(:arg_status as varchar(50))+ ')') Into :arg_str From u_user;
  41. SELECT Top 1 Replace( :arg_str,'自定义文本1','(' +cast(:arg_ls_mtrlsectype as varchar(50))+ ')') Into :arg_str From u_user;
  42. SELECT Top 1 Replace( :arg_str,'自定义文本2','(' +cast(:arg_ls_zxmtrlmode as varchar(50))+ ')') Into :arg_str From u_user;
  43. SELECT Top 1 Replace( :arg_str,:sys_option_change_woodcode,'(' +cast(:arg_woodcode as varchar(50))+ ')') Into :arg_str From u_user;
  44. SELECT Top 1 Replace( :arg_str,:sys_option_change_pcode,'(' +cast(:arg_pcode as varchar(50))+ ')') Into :arg_str From u_user;
  45. SELECT Top 1 Replace( :arg_str,:sys_option_change_status,'(' +cast(:arg_status as varchar(50))+ ')') Into :arg_str From u_user;
  46. SELECT Top 1 Replace( :arg_str,:sys_option_change_mtrlsectype,'(' +cast(:arg_ls_mtrlsectype as varchar(50))+ ')') Into :arg_str From u_user;
  47. SELECT Top 1 Replace( :arg_str,:sys_option_change_zxmtrlmode,'(' +cast(:arg_ls_zxmtrlmode as varchar(50))+ ')') Into :arg_str From u_user;
  48. SELECT Top 1 Replace( :arg_str,'数量','(' + cast(:arg_qty as varchar(50))+ ')') Into :arg_str From u_user;
  49. SELECT Top 1 Replace( :arg_str,'辅数','(' + cast(:arg_addqty as varchar(50))+ ')') Into :arg_str From u_user;
  50. SELECT Top 1 Replace( :arg_str,'单包装数','(' + cast(:arg_dec_danpackqty as varchar(50))+ ')') Into :arg_str From u_user;
  51. SELECT Top 1 Replace( :arg_str,'包装数','(' + cast(:arg_dec_packqty as varchar(50))+ ')') Into :arg_str From u_user;
  52. ds_pricestr.Modify('cmpl.expression= "'+arg_str+'"')
  53. s_rtn = String(ds_pricestr.Object.cmpl[1])
  54. decimal temp_strcheck_digit
  55. select strcheck_digit into :temp_strcheck_digit from u_mtrldef where mtrlid=:arg_mtrlid;
  56. if isnull(temp_strcheck_digit) then temp_strcheck_digit=4
  57. if (temp_strcheck_digit)=0 then temp_strcheck_digit=4
  58. arg_value_dec = Round(Dec(s_rtn) ,temp_strcheck_digit)
  59. RETURN arg_value_dec
  60. end function