123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182 |
- $PBExportHeader$f_ref_saletask_notfpqty.srf
- global type f_ref_saletask_notfpqty from function_object
- end type
- forward prototypes
- global function integer f_ref_saletask_notfpqty (long arg_scid, long arg_taskid, long arg_printid, long arg_mtrlid, string arg_status, ref decimal arg_ref_notfpqty, ref string arg_msg)
- end prototypes
- global function integer f_ref_saletask_notfpqty (long arg_scid, long arg_taskid, long arg_printid, long arg_mtrlid, string arg_status, ref decimal arg_ref_notfpqty, ref string arg_msg);Int rslt = 1
- Int li_ifpackpro
- String ls_status_saletask,ls_woodcode_saletask,ls_pcode_saletask
- Long ll_saletaskmx_pf_ch
- Decimal ld_Sonscale,ld_Sonscale_fm
- Decimal ld_saleqty,ld_fpqty,ld_not_fpqty
- SELECT u_saletaskmx.saleqty - u_saletaskmx.stopqty,
- u_mtrldef.ifpackpro,
- u_saletaskmx.status,
- u_saletaskmx.woodcode,
- u_saletaskmx.pcode
- INTO :ld_saleqty,
- :li_ifpackpro,
- :ls_status_saletask,
- :ls_woodcode_saletask,
- :ls_pcode_saletask
- FROM u_saletaskmx,u_mtrldef
- WHERE u_saletaskmx.scid = :arg_scid
- AND u_saletaskmx.taskid = :arg_taskid
- AND u_saletaskmx.printid = :arg_printid
- And u_saletaskmx.mtrlid = u_mtrldef.mtrlid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询销售订单明细订货数失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF li_ifpackpro = 0 Or li_ifpackpro = 1 Or li_ifpackpro = 2 THEN
- IF li_ifpackpro = 0 THEN
- ld_Sonscale = 1
- ld_Sonscale_fm = 1
- ELSE
- ll_saletaskmx_pf_ch = 0
- IF li_ifpackpro = 1 THEN
- ll_saletaskmx_pf_ch = 0
- ELSE
- SELECT count(*)
- INTO :ll_saletaskmx_pf_ch
- FROM u_SaleTaskMx_pf
- WHERE u_SaleTaskMx_pf.scid = :arg_scid
- AND u_SaleTaskMx_pf.taskid = :arg_taskid
- And u_SaleTaskMx_pf.printid = :arg_printid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '订单明细物料查询是否有换包件失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- END IF
-
- IF ll_saletaskmx_pf_ch > 0 THEN
- SELECT u_SaleTaskMx_pf.Sonscale,
- u_SaleTaskMx_pf.Sonscale_fm
- INTO :ld_Sonscale,:ld_Sonscale_fm
- FROM u_SaleTaskMx_pf
- WHERE u_SaleTaskMx_pf.scid = :arg_scid
- AND u_SaleTaskMx_pf.taskid = :arg_taskid
- AND u_SaleTaskMx_pf.printid = :arg_printid
- And u_SaleTaskMx_pf.sonmtrlid = :arg_mtrlid;
- IF sqlca.SQLCode = -1 THEN
- arg_msg = '订单明细包件物料查询当前库存分配的订单包件产品物料清单是否包含有对应分配的库存包件失败,请检查清单资料,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- ELSEIF sqlca.SQLCode = 100 THEN
- arg_msg = '订单明细包件物料当前库存分配的订单包件产品物料清单不包含有对应分配的库存包件,请检查清单资料'
- rslt = 0
- GOTO ext
- END IF
- ELSE
- SELECT u_prdpf.Sonscale,1
- INTO :ld_Sonscale,:ld_Sonscale_fm
- FROM u_saletaskmx,u_mtrl_pf,u_prdpf,u_mtrldef
- WHERE u_saletaskmx.mtrlid = u_mtrl_pf.mtrlid
- AND u_saletaskmx.scid = :arg_scid
- AND u_saletaskmx.taskid = :arg_taskid
- AND u_saletaskmx.printid = :arg_printid
- AND u_mtrl_pf.mtrlid = u_prdpf.mtrlid
- AND u_mtrl_pf.pfcode = u_prdpf.pfcode
- AND ( u_mtrl_pf.ifdi = 0 AND u_mtrl_pf.ifdft = 1 )
- AND u_PrdPF.SonMtrlid = :arg_mtrlid
- AND u_prdpf.sonmtrlid = u_mtrldef.mtrlid
- And u_mtrldef.ifpack > 0;
- IF sqlca.SQLCode = -1 THEN
- arg_msg = '订单明细包件物料查询当前库存分配的订单包件产品物料清单是否包含有对应分配的库存包件失败,请检查清单资料,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- ELSEIF sqlca.SQLCode = 100 THEN
- arg_msg = '订单明细包件物料当前库存分配的订单包件产品物料清单不包含有对应分配的库存包件,请检查清单资料'
- rslt = 0
- GOTO ext
- END IF
- END IF
- END IF
-
- IF ld_Sonscale = 0 THEN
- arg_msg = '错误的包件组成数,操作取消'
- rslt = 0
- GOTO ext
- END IF
-
- ld_saleqty = ld_saleqty * ld_Sonscale/ld_Sonscale_fm
-
- SELECT isnull(sum(assignqty),0)
- INTO :ld_fpqty
- FROM u_mtrlware_assign
- WHERE u_mtrlware_assign.scid = :arg_scid
- AND u_mtrlware_assign.relbillid = :arg_taskid
- AND u_mtrlware_assign.relprintid = :arg_printid
- AND u_mtrlware_assign.mtrlid = :arg_mtrlid
- And u_mtrlware_assign.assigntype = 1;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询销售订单明细已分配数失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- ld_not_fpqty = ld_saleqty - ld_fpqty
- ELSEIF li_ifpackpro = 3 Or li_ifpackpro = 4 THEN
- s_mtrlcfg_expr s_pz[]
- Long ll_array,ll_l
- Decimal ld_pf_Sonscale[]
- String ls_pf_status[],ls_pf_woodcode[],ls_pf_pcode[]
-
- f_checkpz(ls_status_saletask,s_pz[])
- ll_array = UpperBound(s_pz)
- IF ll_array = 0 THEN
- arg_msg = '订单拆分子件错误,请检查组合配置'
- rslt = 0
- GOTO ext
- END IF
-
- FOR ll_l = 1 To ll_array
- IF s_pz[ll_l].cfgname = arg_status THEN
- ld_Sonscale = Dec(s_pz[ll_l].qty)
- EXIT
- END IF
- NEXT
-
- IF ld_Sonscale = 0 THEN
- arg_msg = '错误的子件组成数,操作取消'
- rslt = 0
- GOTO ext
- END IF
-
- ld_saleqty = ld_saleqty * ld_Sonscale
-
- SELECT isnull(sum(assignqty),0)
- INTO :ld_fpqty
- FROM u_mtrlware_assign,u_mtrlware
- WHERE u_mtrlware_assign.scid = u_mtrlware.scid
- AND u_mtrlware_assign.mtrlwareid = u_mtrlware.mtrlwareid
- AND u_mtrlware_assign.scid = :arg_scid
- AND u_mtrlware_assign.relbillid = :arg_taskid
- AND u_mtrlware_assign.relprintid = :arg_printid
- AND u_mtrlware_assign.mtrlid = :arg_mtrlid
- AND u_mtrlware.status = :arg_status
- AND u_mtrlware.woodcode = :ls_woodcode_saletask
- AND u_mtrlware.pcode = :ls_pcode_saletask
- And u_mtrlware_assign.assigntype = 1;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询销售订单明细已分配数失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- ld_not_fpqty = ld_saleqty - ld_fpqty
- END IF
- arg_ref_notfpqty = ld_not_fpqty
- ext:
- RETURN rslt
- end function
|