1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021 |
- $PBExportHeader$w_rp_multibaracc.srw
- forward
- global type w_rp_multibaracc from w_publ_easyq
- end type
- type cbx_brief from checkbox within w_rp_multibaracc
- end type
- end forward
- global type w_rp_multibaracc from w_publ_easyq
- integer width = 3502
- integer height = 2200
- string title = "多栏式明细帐"
- long backcolor = 80269524
- boolean if_ue_sentdataout = true
- cbx_brief cbx_brief
- end type
- global w_rp_multibaracc w_rp_multibaracc
- type variables
- boolean is_display=false
- s_rp_multibar s_rp_multibar
- end variables
- forward prototypes
- public subroutine wf_pr ()
- end prototypes
- public subroutine wf_pr ();//生成多栏帐报表
- Long li_multibarid,li_year,li_firstmon,li_lastmon
- String ls_multibarname
- s_rp_multibarmx s_multibarmx[]
- Long it_mxt
- Long itemno
- Int dcflag
- Int mxt_c
- String subid,barname,multibarsubid
- Long i,j
- String mod_str
- Long ls_width,ls_sit,ls_dwidth
- Int arg_flag
- //**报表重置**********************************************************
- dw_1.Reset()
- //**取多栏帐参数******************************************************
- li_multibarid = s_rp_multibar.relid
- ls_multibarname = s_rp_multibar.relname
- li_year = s_rp_multibar.Year
- li_firstmon = s_rp_multibar.firstmon
- li_lastmon = s_rp_multibar.lastmon
- multibarsubid = s_rp_multibar.subid
- //**取多栏帐项目******************************************************
- DECLARE multibar_cur CURSOR FOR
- SELECT cw_multibarmx.itemno,
- cw_multibarmx.dcflag,
- cw_multibarmx.subid,
- cw_multibarmx.barname
- FROM cw_multibarmx
- WHERE cw_multibarmx.accsetid = :sys_accsetid
- AND cw_multibarmx.multibarid = :li_multibarid
- Order By dcflag Desc ,itemno Asc ;
- OPEN multibar_cur;
- FETCH multibar_cur INTO :itemno,:dcflag,:subid,:barname;
- DO WHILE sqlca.SQLCode = 0
- it_mxt++
- s_multibarmx[it_mxt].itemno = itemno
- s_multibarmx[it_mxt].dcflag = dcflag
- s_multibarmx[it_mxt].subid = subid
- s_multibarmx[it_mxt].barname = barname
- FETCH multibar_cur INTO :itemno,:dcflag,:subid,:barname;
- LOOP
- CLOSE multibar_cur;
- //**处理报表格式******************************************************
- IF UpperBound(s_multibarmx) = 0 THEN
- RETURN
- ELSE
- ls_dwidth = Long(dw_1.DESCRIBE('sum01.width'))
- FOR i = 1 TO 40
- IF i <= UpperBound(s_multibarmx) THEN
- mod_str = mod_str+"sum"+String(i,'00')+"_t.text='"+s_multibarmx[i].barname+"' ~n "
- mod_str = mod_str+"sum"+String(i,'00')+".width='"+String(ls_dwidth)+"' ~n "
- ELSE
- mod_str = mod_str+"sum"+String(i,'00')+".visible=0 ~n "
- END IF
- NEXT
- dw_1.Modify(mod_str)
- END IF
- ls_sit = Long(dw_1.DESCRIBE('balancesum.x'))
- ls_width = Long(dw_1.DESCRIBE('balancesum.width'))
- dw_1.Modify('bar.width='+String(ls_sit + ls_width + 20))
- //***定义变量**********************************************************************************
- DateTime firstdate,enddate
- Long firstymon,endymon
- Decimal or_amt,up_amt
- Decimal sum_damt,sum_camt
- Decimal balc_amt,mx_balcamt
- Decimal mx_damt,mx_camt,mx_damt_1,mx_camt_1
- firstymon = li_year * 100 + li_firstmon
- endymon = li_year * 100 + li_lastmon
- IF firstymon < sys_startyearmon THEN firstymon = sys_startyearmon
- firstdate = f_rst_mon_1st(1,firstymon)
- enddate = f_rst_mon_1st(3,endymon)
- w_sys_wait.Show()
- //*****1.期初值********************************************************************************
- Long li_row
- li_row = dw_1.InsertRow(0)
- dw_1.Object.typeflag[li_row] = 0
- dw_1.Object.brief[li_row] = '期初余额'
- FOR i = 1 TO UpperBound(s_multibarmx)
- SELECT bdebit,bcredit INTO :mx_damt,:mx_camt FROM cw_balance
- WHERE accsetid = :sys_accsetid
- AND subaccsetid = :sys_subaccsetid
- AND yearmon = :firstymon
- AND subid = :s_multibarmx[i].subid;
-
- IF sqlca.SQLCode <> 0 OR IsNull(mx_damt) THEN mx_damt = 0
- IF sqlca.SQLCode <> 0 OR IsNull(mx_camt) THEN mx_camt = 0
-
- IF s_multibarmx[i].dcflag = 0 THEN
- sum_camt = sum_camt + mx_camt - mx_damt
- dw_1.SetItem ( li_row, "sum"+String(i,'00'), mx_camt - mx_damt )
- s_multibarmx[i].oramt = mx_camt - mx_damt
- ELSE
- sum_damt = sum_damt + mx_damt - mx_camt
- dw_1.SetItem ( li_row, "sum"+String(i,'00'), mx_damt - mx_camt )
- s_multibarmx[i].oramt = mx_damt - mx_camt
- END IF
- NEXT
- balc_amt = sum_damt - sum_camt
- or_amt = balc_amt //**期初余额
- up_amt = balc_amt //**上行结余
- dw_1.Object.debitsum[li_row] = sum_damt
- dw_1.Object.creditsum[li_row] = sum_camt
- dw_1.Object.balancesum[li_row] = Abs(balc_amt)
- IF up_amt = 0 THEN
- dw_1.Object.direct[li_row] = '平'
- ELSEIF up_amt > 0 THEN
- dw_1.Object.direct[li_row] = '借'
- ELSE
- dw_1.Object.direct[li_row] = '贷'
- END IF
- //*****2.期间发生******************************************************************************
- IF is_display THEN
- arg_flag = -1
- ELSE
- arg_flag = 1
- END IF
- Long ll_credno
- Long ll_readtype
- DateTime ld_creddate
- String ls_brief
- Long ls_monthint,cur_monthint
- Decimal sum_month_debit,sum_month_credit
- Decimal sum_year_debit,sum_year_credit
- String ls_credtype
- Long ll_credid
- datastore ds_multibar
- ds_multibar = CREATE datastore
- ds_multibar.DataObject = 'ds_multibar_subid'
- ds_multibar.SetTransObject(sqlca)
- multibarsubid = multibarsubid+'%'
- ds_multibar.Retrieve(sys_accsetid,firstymon,endymon,multibarsubid,arg_flag)
- sum_damt = 0
- sum_camt = 0
- IF ds_multibar.RowCount() > 0 THEN
- FOR i = 1 TO ds_multibar.RowCount()
- FOR j = 1 TO UpperBound(s_multibarmx)
- IF ds_multibar.Object.cw_credencemx_subid[i] = s_multibarmx[j].subid THEN
- ld_creddate = ds_multibar.Object.cw_credence_creddate[i]
- ll_credno = ds_multibar.Object.cw_credence_credno[i]
- ls_brief = ds_multibar.Object.cw_credencemx_brief[i]
- ls_credtype = ds_multibar.Object.cw_credence_credtype[i]
- ll_readtype = ds_multibar.Object.cw_credence_readtype[i]
- ll_credid = ds_multibar.Object.cw_credence_credid[i]
-
- mx_damt = ds_multibar.Object.cw_credencemx_debit[i]
- mx_camt = ds_multibar.Object.cw_credencemx_credit[i]
-
- IF ll_readtype = 100 OR ll_readtype = 301 THEN //**检查是否结转凭证
- li_row = dw_1.InsertRow(0)
- dw_1.Object.typeflag[li_row] = 1
- dw_1.Object.creddate[li_row] = ld_creddate
- dw_1.Object.credno[li_row] = ll_credno
- dw_1.Object.brief[li_row] = ls_brief
- dw_1.Object.credtype[li_row] = ls_credtype
- dw_1.Object.credid[li_row] = ll_credid
-
- IF s_multibarmx[j].dcflag = 1 THEN
- dw_1.SetItem ( li_row, "creditsum", mx_camt )
- balc_amt = mx_camt - mx_damt
- up_amt = up_amt - balc_amt
- ELSE
- dw_1.SetItem ( li_row, "debitsum", mx_damt )
- balc_amt = mx_damt - mx_camt
- up_amt = up_amt + balc_amt
- END IF
-
- dw_1.Object.balancesum[li_row] = Abs(up_amt)
-
- IF up_amt = 0 THEN
- dw_1.Object.direct[li_row] = '平'
- ELSEIF up_amt > 0 THEN
- dw_1.Object.direct[li_row] = '借'
- ELSE
- dw_1.Object.direct[li_row] = '贷'
- END IF
- ELSE
- IF i = 1 THEN //--------------第1行
- li_row = dw_1.InsertRow(0)
- dw_1.Object.typeflag[li_row] = 1
- dw_1.Object.creddate[li_row] = ld_creddate
- dw_1.Object.credno[li_row] = ll_credno
- dw_1.Object.brief[li_row] = ls_brief
- dw_1.Object.credtype[li_row] = ls_credtype
- dw_1.Object.credid[li_row] = ll_credid
-
- IF s_multibarmx[j].dcflag = 1 THEN
- dw_1.SetItem ( li_row, "sum"+String(j,'00'), mx_damt - mx_camt )
- sum_damt = sum_damt + mx_damt - mx_camt
- ELSE
- dw_1.SetItem ( li_row, "sum"+String(j,'00'), mx_camt - mx_damt)
- sum_camt = sum_camt + mx_camt - mx_damt
- END IF
-
-
- //只有一张凭证,第2张为结转凭证
- IF ds_multibar.RowCount() > 1 THEN
- IF ( ds_multibar.Object.cw_credence_readtype[2] = 100 OR &
- ds_multibar.Object.cw_credence_readtype[2] = 301 ) THEN
-
- balc_amt = sum_damt - sum_camt
- dw_1.Object.debitsum[li_row] = sum_damt
- dw_1.Object.creditsum[li_row] = sum_camt
- up_amt = up_amt + balc_amt
- dw_1.Object.balancesum[li_row] = Abs(up_amt)
-
- IF up_amt = 0 THEN
- dw_1.Object.direct[li_row] = '平'
- ELSEIF up_amt > 0 THEN
- dw_1.Object.direct[li_row] = '借'
- ELSE
- dw_1.Object.direct[li_row] = '贷'
- END IF
- END IF
- END IF
-
-
- ELSE //------------------第n行
- //---------------------相同凭证
- IF ds_multibar.Object.cw_credence_creddate[i] = ds_multibar.Object.cw_credence_creddate[i - 1]&
- AND ds_multibar.Object.cw_credence_credno[i] = ds_multibar.Object.cw_credence_credno[i - 1] THEN
- IF s_multibarmx[j].dcflag = 1 THEN
- Decimal tmp_d
- tmp_d = dw_1.GetItemDecimal(li_row,"sum"+String(j,'00'))
- IF IsNull(tmp_d) THEN tmp_d = 0
- dw_1.SetItem ( li_row, "sum"+String(j,'00'),tmp_d + mx_damt - mx_camt )
- sum_damt = sum_damt + mx_damt - mx_camt
- ELSE
- Decimal tmp_c
- tmp_c = dw_1.GetItemDecimal(li_row,"sum"+String(j,'00'))
- IF IsNull(tmp_c) THEN tmp_c = 0
- dw_1.SetItem ( li_row, "sum"+String(j,'00'),tmp_c + mx_camt - mx_damt )
- sum_camt = sum_camt + mx_camt - mx_damt
- END IF
-
- IF cbx_brief.Checked THEN
- IF NOT Pos(dw_1.Object.brief[li_row],ls_brief) > 0 THEN
- dw_1.Object.brief[li_row] = dw_1.Object.brief[li_row] + ','+ls_brief
- END IF
- END IF
-
- IF i = ds_multibar.RowCount() THEN
- balc_amt = sum_damt - sum_camt
- dw_1.Object.debitsum[li_row] = sum_damt
- dw_1.Object.creditsum[li_row] = sum_camt
- up_amt = up_amt + balc_amt
- dw_1.Object.balancesum[li_row] = Abs(up_amt)
-
- IF up_amt = 0 THEN
- dw_1.Object.direct[li_row] = '平'
- ELSEIF up_amt > 0 THEN
- dw_1.Object.direct[li_row] = '借'
- ELSE
- dw_1.Object.direct[li_row] = '贷'
- END IF
- ELSE
- IF ds_multibar.Object.cw_credence_readtype[i + 1] = 100 OR ds_multibar.Object.cw_credence_readtype[i + 1] = 301 THEN
- balc_amt = sum_damt - sum_camt
- dw_1.Object.debitsum[li_row] = sum_damt
- dw_1.Object.creditsum[li_row] = sum_camt
- up_amt = up_amt + balc_amt
- dw_1.Object.balancesum[li_row] = Abs(up_amt)
-
- IF up_amt = 0 THEN
- dw_1.Object.direct[li_row] = '平'
- ELSEIF up_amt > 0 THEN
- dw_1.Object.direct[li_row] = '借'
- ELSE
- dw_1.Object.direct[li_row] = '贷'
- END IF
- END IF
- END IF
- ELSE
- //-----------------不是相同凭证
- IF NOT(ds_multibar.Object.cw_credence_readtype[i - 1] = 100 OR ds_multibar.Object.cw_credence_readtype[i - 1] = 301) THEN
- balc_amt = sum_damt - sum_camt
- dw_1.Object.debitsum[li_row] = sum_damt
- dw_1.Object.creditsum[li_row] = sum_camt
- up_amt = up_amt + balc_amt
- dw_1.Object.balancesum[li_row] = Abs(up_amt)
-
-
- IF up_amt = 0 THEN
- dw_1.Object.direct[li_row] = '平'
- ELSEIF up_amt > 0 THEN
- dw_1.Object.direct[li_row] = '借'
- ELSE
- dw_1.Object.direct[li_row] = '贷'
- END IF
- END IF
-
- sum_damt = 0
- sum_camt = 0
-
- li_row = dw_1.InsertRow(0)
- dw_1.Object.typeflag[li_row] = 1
- dw_1.Object.creddate[li_row] = ld_creddate
- dw_1.Object.credno[li_row] = ll_credno
- dw_1.Object.brief[li_row] = ls_brief
- dw_1.Object.credtype[li_row] = ls_credtype
- dw_1.Object.credid[li_row] = ll_credid
-
-
- IF s_multibarmx[j].dcflag = 1 THEN
- dw_1.SetItem ( li_row, "sum"+String(j,'00'), mx_damt - mx_camt )
- sum_damt = sum_damt + mx_damt - mx_camt
- ELSE
- dw_1.SetItem ( li_row, "sum"+String(j,'00'), mx_camt - mx_damt )
- sum_camt = sum_camt + mx_camt - mx_damt
- END IF
-
- IF i = ds_multibar.RowCount() THEN
- balc_amt = sum_damt - sum_camt
- dw_1.Object.debitsum[li_row] = sum_damt
- dw_1.Object.creditsum[li_row] = sum_camt
- up_amt = up_amt + balc_amt
- dw_1.Object.balancesum[li_row] = Abs(up_amt)
-
- IF up_amt = 0 THEN
- dw_1.Object.direct[li_row] = '平'
- ELSEIF up_amt > 0 THEN
- dw_1.Object.direct[li_row] = '借'
- ELSE
- dw_1.Object.direct[li_row] = '贷'
- END IF
- ELSE
- IF ds_multibar.Object.cw_credence_readtype[i + 1] = 100 OR ds_multibar.Object.cw_credence_readtype[i + 1] = 301 THEN
- balc_amt = sum_damt - sum_camt
- dw_1.Object.debitsum[li_row] = sum_damt
- dw_1.Object.creditsum[li_row] = sum_camt
- up_amt = up_amt + balc_amt
- dw_1.Object.balancesum[li_row] = Abs(up_amt)
-
- IF up_amt = 0 THEN
- dw_1.Object.direct[li_row] = '平'
- ELSEIF up_amt > 0 THEN
- dw_1.Object.direct[li_row] = '借'
- ELSE
- dw_1.Object.direct[li_row] = '贷'
- END IF
- END IF
- END IF
- END IF
- END IF
- END IF
- END IF
- NEXT
- NEXT
- END IF
- //**多月中间合计*******************************************************
- Long k
- Long ll_tmp_year
- Long ll_stat_month
- Decimal or_ydebit,or_ycredit
- Boolean if_sameyear = FALSE
- IF Left(String(firstymon),4) = Left(String(sys_startyearmon),4) THEN
- if_sameyear = TRUE
- ELSE
- if_sameyear = FALSE
- END IF
- ll_stat_month = firstymon
- dw_1.AcceptText()
- IF dw_1.RowCount() > 1 THEN
- k = 1
- DO WHILE k <= dw_1.RowCount()
- CHOOSE CASE dw_1.Object.typeflag[k]
- CASE 0
- k++
- CASE 1
- ld_creddate = dw_1.Object.creddate[k]
- ls_monthint = Year(Date(String(ld_creddate,'yyyy-mm-dd'))) * 100 + Month(Date(String(ld_creddate,'yyyy-mm-dd')))
- IF cur_monthint > 0 THEN
- IF ls_monthint <> cur_monthint THEN
- ll_tmp_year = Long(Left(String(ll_stat_month),4)) * 100
- //3.本期合计
- sum_month_debit = 0
- sum_month_credit = 0
- li_row = dw_1.InsertRow(k)
- dw_1.Object.typeflag[li_row] = 2
- dw_1.Object.brief[li_row] = '本期合计'
- FOR i = 1 TO UpperBound(s_multibarmx)
- SELECT sum(debit),sum(credit) INTO :mx_damt,:mx_camt
- FROM cw_credence,cw_credencemx
- WHERE cw_credence.accsetid = :sys_accsetid
- AND cw_credence.subaccsetid = :sys_subaccsetid
- AND cw_credence.cmonth = :ll_stat_month
- AND cw_credence.accsetid = cw_credencemx.accsetid
- AND cw_credence.subaccsetid = cw_credencemx.subaccsetid
- AND cw_credence.credid = cw_credencemx.credid
- AND cw_credencemx.subid = :s_multibarmx[i].subid
- AND ( cw_credence.postflag = :arg_flag OR :arg_flag = -1 )
- AND ( cw_credence.readtype <> 100 )
- AND ( cw_credence.readtype <> 301 ) ;
-
- IF sqlca.SQLCode <> 0 OR IsNull(mx_camt) THEN mx_camt = 0
- IF sqlca.SQLCode <> 0 OR IsNull(mx_damt) THEN mx_damt = 0
-
- SELECT sum(debit),sum(credit) INTO :mx_damt_1,:mx_camt_1
- FROM cw_credence,cw_credencemx
- WHERE cw_credence.accsetid = :sys_accsetid
- AND cw_credence.subaccsetid = :sys_subaccsetid
- AND cw_credence.accsetid = cw_credencemx.accsetid
- AND cw_credence.subaccsetid = cw_credencemx.subaccsetid
- AND cw_credence.credid = cw_credencemx.credid
- AND cw_credence.cmonth = :ll_stat_month
- AND cw_credencemx.subid = :s_multibarmx[i].subid
- AND ( cw_credence.postflag = :arg_flag OR :arg_flag = -1 )
- AND ( cw_credence.readtype = 100 OR cw_credence.readtype = 301 ) ;
-
- IF sqlca.SQLCode <> 0 OR IsNull(mx_camt_1) THEN mx_camt_1 = 0
- IF sqlca.SQLCode <> 0 OR IsNull(mx_damt_1) THEN mx_damt_1 = 0
-
- IF s_multibarmx[i].dcflag = 0 THEN
- dw_1.SetItem ( li_row, "sum"+String(i,'00'), mx_camt - mx_damt )
- sum_month_debit = sum_month_debit + mx_damt_1 - mx_camt_1
- sum_month_credit = sum_month_credit + mx_camt - mx_damt
-
- s_multibarmx[i].mamt = s_multibarmx[i].mamt + mx_camt - mx_damt - (mx_damt_1 - mx_camt_1)
- ELSE
- dw_1.SetItem ( li_row, "sum"+String(i,'00'), mx_damt - mx_camt )
- sum_month_debit = sum_month_debit + mx_damt - mx_camt
- sum_month_credit = sum_month_credit + mx_camt_1 - mx_damt_1
-
- s_multibarmx[i].mamt = s_multibarmx[i].mamt + mx_damt - mx_camt - (mx_camt_1 - mx_damt_1)
- END IF
- NEXT
-
- dw_1.Object.debitsum[li_row] = sum_month_debit
- dw_1.Object.creditsum[li_row] = sum_month_credit
- balc_amt = dw_1.Object.balancesum[li_row - 1]
- dw_1.Object.balancesum[li_row] = Abs(balc_amt)
-
-
- IF balc_amt = 0 THEN
- dw_1.Object.direct[li_row] = '平'
- ELSEIF balc_amt > 0 THEN
- dw_1.Object.direct[li_row] = '借'
- ELSE
- dw_1.Object.direct[li_row] = '贷'
- END IF
-
- k++
-
- //4.本年累计
- li_row = dw_1.InsertRow(k)
- dw_1.Object.typeflag[li_row] = 3
- dw_1.Object.brief[li_row] = '本年累计'
- sum_year_debit = 0
- sum_year_credit = 0
-
- FOR i = 1 TO UpperBound(s_multibarmx)
- mx_damt = 0
- mx_camt = 0
-
- SELECT sum(credit),sum(debit) INTO :mx_camt,:mx_damt FROM cw_credence,cw_credencemx
- WHERE cw_credence.accsetid = cw_credencemx.accsetid
- AND cw_credence.credid = cw_credencemx.credid
- AND cw_credence.accsetid = :sys_accsetid
- AND ( cw_credence.postflag = :arg_flag OR :arg_flag = -1 )
- AND cw_credencemx.subid = :s_multibarmx[i].subid
- AND cw_credence.cmonth - :ll_tmp_year <= 12
- AND cw_credence.cmonth - :ll_tmp_year >= 1
- AND cw_credence.cmonth <= :ll_stat_month
- AND ( cw_credence.readtype <> 100 )
- AND ( cw_credence.readtype <> 301 ) ;
-
- IF sqlca.SQLCode <> 0 OR IsNull(mx_camt) THEN mx_camt = 0
- IF sqlca.SQLCode <> 0 OR IsNull(mx_damt) THEN mx_damt = 0
-
- SELECT sum(credit),sum(debit) INTO :mx_camt_1,:mx_damt_1 FROM cw_credence,cw_credencemx
- WHERE cw_credence.accsetid = cw_credencemx.accsetid
- AND cw_credence.credid = cw_credencemx.credid
- AND cw_credence.accsetid = :sys_accsetid
- AND ( cw_credence.postflag = :arg_flag OR :arg_flag = -1 )
- AND cw_credencemx.subid = :s_multibarmx[i].subid
- AND cw_credence.cmonth - :ll_tmp_year <= 12
- AND cw_credence.cmonth - :ll_tmp_year >= 1
- AND cw_credence.cmonth <= :ll_stat_month
- AND ( cw_credence.readtype = 100 OR cw_credence.readtype = 301 ) ;
-
- IF sqlca.SQLCode <> 0 OR IsNull(mx_camt_1) THEN mx_camt_1 = 0
- IF sqlca.SQLCode <> 0 OR IsNull(mx_damt_1) THEN mx_damt_1 = 0
-
-
- IF if_sameyear THEN
- SELECT sum(debit),sum(credit) INTO :or_ydebit,:or_ycredit FROM cw_InitBalance
- WHERE cw_InitBalance.accsetid = :sys_accsetid
- AND cw_InitBalance.subid = :s_multibarmx[i].subid;
-
- IF sqlca.SQLCode <> 0 OR IsNull(or_ydebit) THEN or_ydebit = 0
- IF sqlca.SQLCode <> 0 OR IsNull(or_ycredit) THEN or_ycredit = 0
- ELSE
- or_ydebit = 0
- or_ycredit = 0
- END IF
-
-
- IF s_multibarmx[i].dcflag = 0 THEN
- dw_1.SetItem ( li_row, "sum"+String(i,'00'), mx_camt - mx_damt + or_ycredit )
- sum_year_debit = sum_year_debit + mx_damt_1 - mx_camt_1 + or_ydebit
- sum_year_credit = sum_year_credit + mx_camt - mx_damt + or_ycredit
- ELSE
- dw_1.SetItem ( li_row, "sum"+String(i,'00'), mx_damt - mx_camt + or_ydebit )
- sum_year_debit = sum_year_debit + mx_damt - mx_camt + or_ydebit
- sum_year_credit = sum_year_credit + mx_camt_1 - mx_damt_1 + or_ycredit
- END IF
- NEXT
-
- dw_1.Object.debitsum[li_row] = sum_year_debit
- dw_1.Object.creditsum[li_row] = sum_year_credit
- dw_1.Object.balancesum[li_row] = Abs(balc_amt)
-
-
- balc_amt = dw_1.Object.balancesum[li_row - 1]
- IF balc_amt = 0 THEN
- dw_1.Object.direct[li_row] = '平'
- ELSEIF balc_amt > 0 THEN
- dw_1.Object.direct[li_row] = '借'
- ELSE
- dw_1.Object.direct[li_row] = '贷'
- END IF
-
- k++
-
- //5.余额
- li_row = dw_1.InsertRow(k)
- dw_1.Object.typeflag[li_row] = 4
- dw_1.Object.brief[li_row] = '余 额'
-
- FOR i = 1 TO UpperBound(s_multibarmx)
- dw_1.SetItem ( li_row, "sum"+String(i,'00'), s_multibarmx[i].oramt + s_multibarmx[i].mamt )
- NEXT
-
-
- dw_1.AcceptText()
- ll_stat_month = ll_stat_month + 1
- END IF
- END IF
- k++
- cur_monthint = ls_monthint
- CASE 2,3
- cur_monthint = 0
- k++
- END CHOOSE
- LOOP
- END IF
- //**最后一行合计*******************************************************
- IF ds_multibar.RowCount() > 0 THEN
- //3.本期合计
- ll_stat_month = endymon
- ll_tmp_year = Long(Left(String(ll_stat_month),4)) * 100
-
- sum_month_debit = 0
- sum_month_credit = 0
-
- li_row = dw_1.InsertRow(0)
-
- dw_1.Object.brief[li_row] = '本期合计'
- FOR i = 1 TO UpperBound(s_multibarmx)
- SELECT sum(debit),sum(credit) INTO :mx_damt,:mx_camt
- FROM cw_credence,cw_credencemx
- WHERE cw_credence.accsetid = :sys_accsetid
- AND cw_credence.subaccsetid = :sys_subaccsetid
- AND cw_credence.accsetid = cw_credencemx.accsetid
- AND cw_credence.subaccsetid = cw_credencemx.subaccsetid
- AND cw_credence.credid = cw_credencemx.credid
- AND cw_credence.cmonth = :ll_stat_month
- AND cw_credencemx.subid = :s_multibarmx[i].subid
- AND ( cw_credence.postflag = :arg_flag OR :arg_flag = -1 )
- AND ( cw_credence.readtype <> 100 )
- AND ( cw_credence.readtype <> 301 ) ;
-
- IF sqlca.SQLCode <> 0 OR IsNull(mx_camt) THEN mx_camt = 0
- IF sqlca.SQLCode <> 0 OR IsNull(mx_damt) THEN mx_damt = 0
-
- SELECT sum(debit),sum(credit) INTO :mx_damt_1,:mx_camt_1
- FROM cw_credence,cw_credencemx
- WHERE cw_credence.accsetid = :sys_accsetid
- AND cw_credence.subaccsetid = :sys_subaccsetid
- AND cw_credence.accsetid = cw_credencemx.accsetid
- AND cw_credence.subaccsetid = cw_credencemx.subaccsetid
- AND cw_credence.credid = cw_credencemx.credid
- AND cw_credence.cmonth = :ll_stat_month
- AND cw_credencemx.subid = :s_multibarmx[i].subid
- AND ( cw_credence.postflag = :arg_flag OR :arg_flag = -1 )
- AND ( cw_credence.readtype = 100 OR cw_credence.readtype = 301 ) ;
-
- IF sqlca.SQLCode <> 0 OR IsNull(mx_camt_1) THEN mx_camt_1 = 0
- IF sqlca.SQLCode <> 0 OR IsNull(mx_damt_1) THEN mx_damt_1 = 0
-
- IF s_multibarmx[i].dcflag = 0 THEN
- dw_1.SetItem ( li_row, "sum"+String(i,'00'), mx_camt - mx_damt )
- sum_month_debit = sum_month_debit + mx_damt_1 - mx_camt_1
- sum_month_credit = sum_month_credit + mx_camt - mx_damt
-
- s_multibarmx[i].mamt = s_multibarmx[i].mamt + mx_camt - mx_damt - (mx_damt_1 - mx_camt_1)
- ELSE
- dw_1.SetItem ( li_row, "sum"+String(i,'00'), mx_damt - mx_camt )
- sum_month_debit = sum_month_debit + mx_damt - mx_camt
- sum_month_credit = sum_month_credit + mx_camt_1 - mx_damt_1
-
- s_multibarmx[i].mamt = s_multibarmx[i].mamt + mx_damt - mx_camt - (mx_camt_1 - mx_damt_1)
- END IF
- NEXT
-
-
- dw_1.Object.debitsum[li_row] = sum_month_debit
- dw_1.Object.creditsum[li_row] = sum_month_credit
-
- balc_amt = dw_1.Object.balancesum[li_row - 1]
- dw_1.Object.balancesum[li_row] = Abs(balc_amt)
-
- IF balc_amt = 0 THEN
- dw_1.Object.direct[li_row] = '平'
- ELSEIF balc_amt > 0 THEN
- dw_1.Object.direct[li_row] = '借'
- ELSE
- dw_1.Object.direct[li_row] = '贷'
- END IF
-
-
- //4.本年累计
- li_row = dw_1.InsertRow(0)
- dw_1.Object.brief[li_row] = '本年累计'
- sum_year_debit = 0
- sum_year_credit = 0
- FOR i = 1 TO UpperBound(s_multibarmx)
- SELECT sum(credit),sum(debit) INTO :mx_camt,:mx_damt FROM cw_credence,cw_credencemx
- WHERE cw_credence.accsetid = cw_credencemx.accsetid
- AND cw_credence.credid = cw_credencemx.credid
- AND cw_credence.accsetid = :sys_accsetid
- AND ( cw_credence.postflag = :arg_flag OR :arg_flag = -1 )
- AND cw_credencemx.subid = :s_multibarmx[i].subid
- AND cw_credence.cmonth - :ll_tmp_year <= 12
- AND cw_credence.cmonth - :ll_tmp_year >= 1
- AND cw_credence.cmonth <= :ll_stat_month
- AND ( cw_credence.readtype <> 100 )
- AND ( cw_credence.readtype <> 301 ) ;
-
- IF sqlca.SQLCode <> 0 OR IsNull(mx_camt) THEN mx_camt = 0
- IF sqlca.SQLCode <> 0 OR IsNull(mx_damt) THEN mx_damt = 0
-
- SELECT sum(credit),sum(debit) INTO :mx_camt_1,:mx_damt_1 FROM cw_credence,cw_credencemx
- WHERE cw_credence.accsetid = cw_credencemx.accsetid
- AND cw_credence.credid = cw_credencemx.credid
- AND cw_credence.accsetid = :sys_accsetid
- AND ( cw_credence.postflag = :arg_flag OR :arg_flag = -1 )
- AND cw_credencemx.subid = :s_multibarmx[i].subid
- AND cw_credence.cmonth - :ll_tmp_year <= 12
- AND cw_credence.cmonth - :ll_tmp_year >= 1
- AND cw_credence.cmonth <= :ll_stat_month
- AND ( cw_credence.readtype = 100 OR cw_credence.readtype = 301 ) ;
-
- IF sqlca.SQLCode <> 0 OR IsNull(mx_camt_1) THEN mx_camt_1 = 0
- IF sqlca.SQLCode <> 0 OR IsNull(mx_damt_1) THEN mx_damt_1 = 0
-
-
- IF if_sameyear THEN
- SELECT sum(debit),sum(credit) INTO :or_ydebit,:or_ycredit FROM cw_InitBalance
- WHERE cw_InitBalance.accsetid = :sys_accsetid
- AND cw_InitBalance.subid = :s_multibarmx[i].subid;
-
- IF sqlca.SQLCode <> 0 OR IsNull(or_ydebit) THEN or_ydebit = 0
- IF sqlca.SQLCode <> 0 OR IsNull(or_ycredit) THEN or_ycredit = 0
- ELSE
- or_ydebit = 0
- or_ycredit = 0
- END IF
-
-
- IF s_multibarmx[i].dcflag = 0 THEN
- dw_1.SetItem ( li_row, "sum"+String(i,'00'), mx_camt - mx_damt + or_ycredit )
- sum_year_debit = sum_year_debit + mx_damt_1 - mx_camt_1 + or_ydebit
- sum_year_credit = sum_year_credit + mx_camt - mx_damt + or_ycredit
- ELSE
- dw_1.SetItem ( li_row, "sum"+String(i,'00'), mx_damt - mx_camt + or_ydebit )
- sum_year_debit = sum_year_debit + mx_damt - mx_camt + or_ydebit
- sum_year_credit = sum_year_credit + mx_camt_1 - mx_damt_1 + or_ycredit
- END IF
- NEXT
-
- dw_1.Object.debitsum[li_row] = sum_year_debit
- dw_1.Object.creditsum[li_row] = sum_year_debit
- balc_amt = dw_1.Object.balancesum[li_row - 1]
- dw_1.Object.balancesum[li_row] = Abs(balc_amt)
-
- IF balc_amt = 0 THEN
- dw_1.Object.direct[li_row] = '平'
- ELSEIF balc_amt > 0 THEN
- dw_1.Object.direct[li_row] = '借'
- ELSE
- dw_1.Object.direct[li_row] = '贷'
- END IF
-
- //5.余额
- li_row = dw_1.InsertRow(0)
- dw_1.Object.brief[li_row] = '余 额'
-
- FOR i = 1 TO UpperBound(s_multibarmx)
- dw_1.SetItem ( li_row, "sum"+String(i,'00'), s_multibarmx[i].oramt + s_multibarmx[i].mamt )
- NEXT
- END IF
- //改变标题
- dw_1.Object.Title.Text = ls_multibarname + "明细帐"
- dw_1.Object.Month.Text = "会计期间:"+String(firstymon)+" 至 "+String(endymon)
- w_sys_wait.Hide()
- end subroutine
- on w_rp_multibaracc.create
- int iCurrent
- call super::create
- this.cbx_brief=create cbx_brief
- iCurrent=UpperBound(this.Control)
- this.Control[iCurrent+1]=this.cbx_brief
- end on
- on w_rp_multibaracc.destroy
- call super::destroy
- destroy(this.cbx_brief)
- end on
- event open;this.triggerevent('ue_before_open')
- wf_movetocenter()
- IF TRIM(DW_1.DATAOBJECT)<>'' THEN
- DW_1.OBJECT.DataWindow.PRINT.MARGIN.TOP=INTEGER(ProfileString(sys_inifilename,DW_1.DATAOBJECT, "MARGIN_TOP", "110"))
- DW_1.OBJECT.DataWindow.PRINT.MARGIN.LEFT=INTEGER(ProfileString(sys_inifilename,DW_1.DATAOBJECT, "MARGIN_LEFT", "96" ))
- DW_1.OBJECT.DataWindow.PRINT.MARGIN.bottom=INTEGER(ProfileString(sys_inifilename,DW_1.DATAOBJECT, "MARGIN_BOTTOM", "110"))
- DW_1.OBJECT.DataWindow.PRINT.MARGIN.right=INTEGER(ProfileString(sys_inifilename,DW_1.DATAOBJECT, "MARGIN_RIGHT", "96" ))
- end if
- Int use_brief
- use_brief = Integer(ProfileString (sys_inifilename,dw_1.DataObject, "use_brief", '0'))
- IF use_brief = 1 THEN
- cbx_brief.Checked = TRUE
- ELSE
- cbx_brief.Checked = FALSE
- END IF
- dw_1.SetTransObject (sqlca)
- cb_1.triggerevent(clicked!)
- end event
- event close;Int use_brief
- IF cbx_brief.Checked THEN
- use_brief = 1
- ELSE
- use_brief = 0
- END IF
- SetProfileString (sys_inifilename,dw_1.DataObject, "use_brief", String(use_brief))
- end event
- event ue_before_open;call super::ue_before_open;if_ue_filter = TRUE
- if_ue_sort = TRUE
- if_ue_sentdataout = TRUE
- end event
- type cb_func from w_publ_easyq`cb_func within w_rp_multibaracc
- end type
- type cb_exit from w_publ_easyq`cb_exit within w_rp_multibaracc
- integer x = 965
- end type
- type cb_2 from w_publ_easyq`cb_2 within w_rp_multibaracc
- boolean bringtotop = true
- end type
- type cb_psetup from w_publ_easyq`cb_psetup within w_rp_multibaracc
- boolean bringtotop = true
- end type
- type cb_1 from w_publ_easyq`cb_1 within w_rp_multibaracc
- boolean bringtotop = true
- string text = "过滤"
- end type
- event cb_1::clicked;call super::clicked;open(w_rp_multibar)
- s_rp_multibar=message.powerobjectparm
- long firstmon,lastmon,ls_multibarid,ls_firstmon,ls_lastmon
- ls_multibarid=s_rp_multibar.relid
- if ls_multibarid=0 then
- if is_display then
- return
- else
- close(parent)
- return
- end if
- end if
- is_display=true
- wf_pr()
- end event
- type st_3 from w_publ_easyq`st_3 within w_rp_multibaracc
- integer x = 768
- integer y = 736
- end type
- type st_4 from w_publ_easyq`st_4 within w_rp_multibaracc
- integer x = 1710
- integer y = 624
- end type
- type em_1 from w_publ_easyq`em_1 within w_rp_multibaracc
- integer x = 987
- integer y = 700
- end type
- type em_2 from w_publ_easyq`em_2 within w_rp_multibaracc
- integer x = 1321
- integer y = 780
- end type
- type ddlb_yl from w_publ_easyq`ddlb_yl within w_rp_multibaracc
- integer x = 1358
- integer y = 52
- end type
- type cbx_yl from w_publ_easyq`cbx_yl within w_rp_multibaracc
- integer x = 1138
- integer y = 52
- end type
- type dw_1 from w_publ_easyq`dw_1 within w_rp_multibaracc
- integer y = 300
- integer width = 2537
- integer height = 952
- string dataobject = "dw_multibaracc"
- end type
- event dw_1::doubleclicked;Long ll_row
- Long ll_credid
- ll_row = THIS.GetRow()
- IF ll_row <= 0 THEN RETURN
- ll_credid = THIS.Object.credid[ll_row]
- IF ll_credid <= 0 THEN RETURN
- s_edit_index_tran s_tran //翻页功能窗口 传递参数使用
- s_tran.if_retrieve_all = TRUE //是否一次RETRIEVE所有行
- s_tran.work_mode = 0 //0-单纯编辑模式, 1-选择模式
- s_tran.arg_pkid = 0 //目标定位PKID (备用)
- s_tran.arg_string_code = '' //查询列部分内容,用于初步筛选
- s_tran.e_long = ll_credid
- OpenWithParm(w_credence_edit,s_tran)
- end event
- type sle_mtrl from w_publ_easyq`sle_mtrl within w_rp_multibaracc
- integer x = 1659
- integer y = 952
- end type
- type sle_cust from w_publ_easyq`sle_cust within w_rp_multibaracc
- integer x = 498
- integer y = 952
- end type
- type st_mtrl from w_publ_easyq`st_mtrl within w_rp_multibaracc
- integer x = 1202
- integer y = 968
- end type
- type st_cust from w_publ_easyq`st_cust within w_rp_multibaracc
- integer x = 37
- integer y = 968
- end type
- type cbx_loginretr from w_publ_easyq`cbx_loginretr within w_rp_multibaracc
- integer x = 1851
- integer y = 748
- end type
- type pb_em1 from w_publ_easyq`pb_em1 within w_rp_multibaracc
- boolean visible = false
- integer x = 599
- integer y = 836
- end type
- type pb_em2 from w_publ_easyq`pb_em2 within w_rp_multibaracc
- boolean visible = false
- integer x = 1211
- integer y = 836
- end type
- type pb_2 from w_publ_easyq`pb_2 within w_rp_multibaracc
- boolean visible = false
- integer x = 1321
- integer y = 836
- end type
- type cb_help from w_publ_easyq`cb_help within w_rp_multibaracc
- boolean visible = false
- integer x = 2542
- integer y = 668
- end type
- type cb_copyself from w_publ_easyq`cb_copyself within w_rp_multibaracc
- end type
- type gb_1 from w_publ_easyq`gb_1 within w_rp_multibaracc
- end type
- type ln_bar from w_publ_easyq`ln_bar within w_rp_multibaracc
- end type
- type ln_bar2 from w_publ_easyq`ln_bar2 within w_rp_multibaracc
- end type
- type r_bar from w_publ_easyq`r_bar within w_rp_multibaracc
- end type
- type ln_1 from w_publ_easyq`ln_1 within w_rp_multibaracc
- boolean visible = false
- end type
- type ln_2 from w_publ_easyq`ln_2 within w_rp_multibaracc
- boolean visible = false
- end type
- type ln_3 from w_publ_easyq`ln_3 within w_rp_multibaracc
- boolean visible = false
- end type
- type ln_4 from w_publ_easyq`ln_4 within w_rp_multibaracc
- boolean visible = false
- end type
- type cbx_brief from checkbox within w_rp_multibaracc
- integer x = 27
- integer y = 212
- integer width = 681
- integer height = 60
- boolean bringtotop = true
- integer textsize = -9
- integer weight = 400
- fontcharset fontcharset = gb2312charset!
- fontpitch fontpitch = variable!
- string facename = "宋体"
- long textcolor = 33554432
- long backcolor = 67108864
- string text = "相同凭证合并分录摘要"
- end type
|