123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243 |
- $PBExportHeader$f_get_defsaleprice.srf
- global type f_get_defsaleprice from function_object
- end type
- forward prototypes
- global subroutine f_get_defsaleprice (long arg_cusid, long arg_mtrlid, string arg_status, string arg_pcode, string arg_woodcode, long arg_moneyid, ref decimal arg_def_dftsaleprice)
- end prototypes
- global subroutine f_get_defsaleprice (long arg_cusid, long arg_mtrlid, string arg_status, string arg_pcode, string arg_woodcode, long arg_moneyid, ref decimal arg_def_dftsaleprice);Int rslt = 1
- Int li_mtrlorigin,li_price_ifpz
- String ls_status,ls_pcode,ls_woodcode
- Long ll_pricelistid,li_flag
- Long ll_moneyid
- s_mtrlcfg_expr s_pz[]
- Long ll_statusflag
- Decimal obj_price
- Long ll_i
- String ls_status_zj
- Decimal ld_price_zj,ld_rebate_zj
- SELECT statusflag,mtrlorigin,price_ifpz
- INTO :ll_statusflag,:li_mtrlorigin,:li_price_ifpz
- FROM u_mtrldef
- Where mtrlid = :arg_mtrlid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF sys_option_checkprice_native = 1 THEN
- SELECT moneyid INTO :ll_moneyid
- FROM cw_currency
- Where native = 1;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- GOTO ext
- END IF
- ELSE
- ll_moneyid = arg_moneyid
- END IF
- IF ll_statusflag = 2 And arg_status <> '' THEN
-
- SELECT pricelistid INTO :ll_pricelistid
- FROM u_cust
- Where cusid = :arg_cusid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- f_checkpz(arg_status,s_pz[])
-
- //改写
- // IF sys_option_price_if_pz = 0 THEN
- // ls_pcode = ''
- // ls_woodcode = ''
- // ELSE
- // ls_pcode = arg_pcode
- // ls_woodcode = arg_woodcode
- // END IF
- CHOOSE CASE li_price_ifpz
- CASE 0,1,4,6,7
- ls_woodcode = ''
- ls_pcode = ''
- CASE 2
- ls_woodcode = arg_woodcode
- ls_pcode = ''
- CASE 3
- ls_woodcode = ''
- ls_pcode = arg_pcode
- CASE 5
- ls_woodcode = arg_woodcode
- ls_pcode = arg_pcode
- END CHOOSE
-
- obj_price = 0
- FOR ll_i = 1 To UpperBound(s_pz)
- ls_status_zj = s_pz[ll_i].cfgname
- ld_price_zj = 0
- ld_rebate_zj = 0
-
- IF ll_pricelistid = 0 THEN
- SELECT u_sale_price_list.pricelistid INTO :ll_pricelistid
- FROM u_sale_price_list,u_sale_price_mx
- WHERE u_sale_price_mx.pricelistid = u_sale_price_list.pricelistid
- AND u_sale_price_mx.mtrlid = :arg_mtrlid
- AND u_sale_price_mx.status = :ls_status_zj
- AND u_sale_price_mx.pcode = :ls_pcode
- AND u_sale_price_mx.woodcode = :ls_woodcode
- AND u_sale_price_list.dftflag = 1
- AND u_sale_price_mx.flag = 1
- And u_sale_price_list.moneyid = :ll_moneyid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
-
- SELECT u_sale_price_mx.price,u_sale_price_mx.rebate
- INTO :ld_price_zj,:ld_rebate_zj
- FROM u_sale_price_mx,u_sale_price_list
- WHERE ( u_sale_price_mx.pricelistid = u_sale_price_list.pricelistid) AND
- (u_sale_price_mx.pricelistid = :ll_pricelistid) AND
- ( u_sale_price_mx.mtrlid = :arg_mtrlid ) AND
- ( u_sale_price_mx.status = :ls_status_zj ) AND
- ( u_sale_price_mx.pcode = :ls_pcode ) AND
- ( u_sale_price_mx.woodcode = :ls_woodcode ) AND
- ( u_sale_price_mx.flag = 1 );
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- GOTO ext
- ELSE
- obj_price = obj_price + ld_price_zj * ld_rebate_zj * Dec(s_pz[ll_i].qty)
- END IF
- NEXT
- arg_def_dftsaleprice = obj_price
- ELSE
- //改写
- // IF sys_option_price_if_status = 0 THEN
- // ls_status = ''
- // ls_pcode = ''
- // ls_woodcode = ''
- // ELSE
- // ls_status = arg_status
- // ls_pcode = arg_pcode
- // ls_woodcode = arg_woodcode
- // END IF
- CHOOSE CASE li_price_ifpz
- CASE 0
- ls_status = ''
- ls_woodcode = ''
- ls_pcode = ''
- case 1
- ls_status = arg_status
- ls_woodcode = ''
- ls_pcode = ''
- CASE 2
- ls_status = ''
- ls_woodcode = arg_woodcode
- ls_pcode = ''
- CASE 3
- ls_status = ''
- ls_woodcode = ''
- ls_pcode = arg_pcode
- case 4
- ls_status = arg_status
- ls_woodcode = arg_woodcode
- ls_pcode = ''
- CASE 5
- ls_status = ''
- ls_woodcode = arg_woodcode
- ls_pcode = arg_pcode
- case 6
- ls_status = arg_status
- ls_woodcode = ''
- ls_pcode = arg_pcode
- case 7
- ls_status = arg_status
- ls_woodcode = arg_woodcode
- ls_pcode = arg_pcode
- END CHOOSE
-
- SELECT pricelistid INTO :ll_pricelistid
- FROM u_cust
- Where cusid = :arg_cusid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- IF ll_pricelistid = 0 THEN
- SELECT u_sale_price_list.pricelistid INTO :ll_pricelistid
- FROM u_sale_price_list,u_sale_price_mx
- WHERE u_sale_price_mx.pricelistid = u_sale_price_list.pricelistid
- AND u_sale_price_mx.mtrlid = :arg_mtrlid
- AND u_sale_price_mx.status = :ls_status
- AND u_sale_price_mx.pcode = :ls_pcode
- AND u_sale_price_mx.woodcode = :ls_woodcode
- AND u_sale_price_list.dftflag = 1
- AND u_sale_price_mx.flag = 1
- And u_sale_price_list.moneyid = :ll_moneyid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
-
- SELECT u_sale_price_mx.price,u_sale_price_mx.flag
- INTO :arg_def_dftsaleprice,:li_flag
- FROM u_sale_price_mx
- WHERE u_sale_price_mx.mtrlid = :arg_mtrlid
- AND u_sale_price_mx.status = :ls_status
- AND u_sale_price_mx.pcode = :ls_pcode
- AND u_sale_price_mx.woodcode = :ls_woodcode
- AND u_sale_price_mx.flag = 1
- And u_sale_price_mx.pricelistid = :ll_pricelistid;
-
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- IF li_flag = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- ext:
- IF rslt = 0 THEN
- arg_def_dftsaleprice = 0
- END IF
- //如果是采购类产品查不到订单,则查最新购价作定价
- IF li_mtrlorigin = 2 And arg_def_dftsaleprice = 0 And sys_option_saletask_dftsaleprice_get1buyprice = 1 THEN
- SELECT v_maxprice_sptprice.price INTO :arg_def_dftsaleprice
- From v_maxprice_sptprice Where mtrlid = :arg_mtrlid;
- IF sqlca.SQLCode <> 0 THEN
- arg_def_dftsaleprice = 0
- END IF
- END IF
- end subroutine
|