unit u_cw_pingzheng; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, bsSkinCtrls, ComCtrls, bsSkinTabs, dxExEdtr, dxCntner, dxTL, dxDBCtrl, dxDBGrid, StdCtrls, wwdbdatetimepicker, RxLookup, DB, ADODB,FileCtrl, dxDBTLCl, dxGrClms, Mask, wwdbedit, Wwdotdot, Wwdbcomb, Grids, DBGrids, ExtCtrls, DBGridEh, kbmMemTable, DBTables,inifiles; type Tfrm_cw_pingzheng = class(TForm) t_op_seae: TADOQuery; t_op_seae1: TDataSource; t_cw_design: TADOQuery; t_cw_design1: TDataSource; t_op_seai: TADOQuery; t_op_seai1: TDataSource; t_op_airi1: TDataSource; t_op_airi: TADOQuery; t_op_aire: TADOQuery; t_op_aire1: TDataSource; bsSkinPanel2: TbsSkinPanel; page1: TbsSkinPageControl; tbbsVou: TbsSkinTabSheet; tbbalvou: TbsSkinTabSheet; bsSkinGroupBox2: TbsSkinGroupBox; bsSkinPanel10: TbsSkinPanel; Label25: TLabel; Label65: TLabel; Label26: TLabel; Label27: TLabel; Label28: TLabel; Edit9: TEdit; wwDBDateTimePicker17: TwwDBDateTimePicker; wwDBDateTimePicker18: TwwDBDateTimePicker; wwDBComboBox1: TwwDBComboBox; bsSkinPageControl1: TbsSkinPageControl; bsSkinTabSheet1: TbsSkinTabSheet; bsSkinPanel1: TbsSkinPanel; Label10: TLabel; Label3: TLabel; Label5: TLabel; Label8: TLabel; Label11: TLabel; wwDBDateTimePicker1: TwwDBDateTimePicker; Edit4: TEdit; wwDBDateTimePicker2: TwwDBDateTimePicker; Edit2: TEdit; wwDBDateTimePicker3: TwwDBDateTimePicker; wwDBDateTimePicker4: TwwDBDateTimePicker; bsSkinTabSheet2: TbsSkinTabSheet; bsSkinPanel4: TbsSkinPanel; Label2: TLabel; Label4: TLabel; Label6: TLabel; Label7: TLabel; Label9: TLabel; Label12: TLabel; wwDBDateTimePicker5: TwwDBDateTimePicker; Edit1: TEdit; wwDBDateTimePicker6: TwwDBDateTimePicker; Edit3: TEdit; wwDBDateTimePicker7: TwwDBDateTimePicker; wwDBDateTimePicker8: TwwDBDateTimePicker; bsSkinTabSheet3: TbsSkinTabSheet; bsSkinPanel6: TbsSkinPanel; Label13: TLabel; Label14: TLabel; Label15: TLabel; Label16: TLabel; Label17: TLabel; Label18: TLabel; wwDBDateTimePicker9: TwwDBDateTimePicker; Edit5: TEdit; wwDBDateTimePicker10: TwwDBDateTimePicker; Edit6: TEdit; wwDBDateTimePicker11: TwwDBDateTimePicker; wwDBDateTimePicker12: TwwDBDateTimePicker; bsSkinTabSheet4: TbsSkinTabSheet; bsSkinPanel8: TbsSkinPanel; Label19: TLabel; Label20: TLabel; Label21: TLabel; Label22: TLabel; Label23: TLabel; Label24: TLabel; wwDBDateTimePicker13: TwwDBDateTimePicker; Edit7: TEdit; wwDBDateTimePicker14: TwwDBDateTimePicker; Edit8: TEdit; wwDBDateTimePicker15: TwwDBDateTimePicker; wwDBDateTimePicker16: TwwDBDateTimePicker; bsSkinPanel12: TbsSkinPanel; DBGridEh1: TDBGridEh; DBGridEh4: TDBGridEh; DBGridEh5: TDBGridEh; DBGridEh6: TDBGridEh; DBGridEh7: TDBGridEh; TBVouList: TbsSkinTabSheet; bsSkinPanel16: TbsSkinPanel; t_op_balance: TADOQuery; t_op_balance1: TDataSource; bsSkinButton5: TbsSkinButton; t_op_balanceDSDesigner: TStringField; t_op_balanceDSDesigner2: TStringField; t_op_balanceDSDesigner3: TStringField; t_op_balanceDSDesigner4: TStringField; t_op_balanceDSDesigner5: TStringField; t_op_balanceDSDesigner6: TStringField; t_op_balanceDSDesigner7: TBCDField; t_op_balanceDSDesigner8: TBCDField; t_op_balanceDSDesigner9: TBCDField; t_op_balanceDSDesigner10: TStringField; t_op_balanceDSDesigner11: TStringField; t_op_balanceDSDesigner12: TStringField; t_op_balanceDSDesigner13: TDateTimeField; t_op_balanceDSDesigner14: TBooleanField; t_op_balanceDSDesigner15: TStringField; t_op_balanceDSDesigner16: TStringField; t_op_balanceDSDesigner17: TDateTimeField; t_op_balanceDSDesigner18: TStringField; t_op_balanceDSDesigner19: TStringField; t_op_balanceDSDesigner20: TDateTimeField; t_op_balanceDSDesigner21: TStringField; t_op_balanceDSDesigner22: TBooleanField; t_op_balanceDSDesigner23: TStringField; bsSkinButton10: TbsSkinButton; bsSkinButton3: TbsSkinButton; bsSkinButton1: TbsSkinButton; bsSkinButton4: TbsSkinButton; bsSkinButton6: TbsSkinButton; bsSkinButton7: TbsSkinButton; bsSkinButton9: TbsSkinButton; bsSkinButton11: TbsSkinButton; bsSkinButton12: TbsSkinButton; bsSkinButton14: TbsSkinButton; bsSkinButton15: TbsSkinButton; bsSkinButton16: TbsSkinButton; bsSkinButton18: TbsSkinButton; bsSkinButton19: TbsSkinButton; bsSkinButton20: TbsSkinButton; bsSkinCheckRadioBox1: TbsSkinCheckRadioBox; bsSkinCheckRadioBox2: TbsSkinCheckRadioBox; bsSkinCheckRadioBox3: TbsSkinCheckRadioBox; bsSkinCheckRadioBox4: TbsSkinCheckRadioBox; bsSkinCheckRadioBox5: TbsSkinCheckRadioBox; bsSkinPanel3: TbsSkinPanel; Label30: TLabel; wwDBDateTimePicker19: TwwDBDateTimePicker; Label31: TLabel; wwDBDateTimePicker20: TwwDBDateTimePicker; Label33: TLabel; EditMblNo: TEdit; EditOrdNoTo: TEdit; Label34: TLabel; EditOrdNoFrm: TEdit; Label35: TLabel; bsSkinButton2: TbsSkinButton; bsSkinButton8: TbsSkinButton; bsSkinButton13: TbsSkinButton; bsSkinPanel7: TbsSkinPanel; Splitter1: TSplitter; bsSkinPanel9: TbsSkinPanel; DBGridEh2: TDBGridEh; bsSkinPanel11: TbsSkinPanel; DBGridCarriageSum: TDBGridEh; dsrvouitems: TDataSource; dsrVou: TDataSource; memTblVou: TkbmMemTable; qryVouitems: TADOQuery; Query1: TQuery; bsSkinCheckRadioBox6: TbsSkinCheckRadioBox; RxDBLookupCombo2: TRxDBLookupCombo; Label29: TLabel; wwDBDateTimePicker21: TwwDBDateTimePicker; Label36: TLabel; RxDBLookupCombo6: TRxDBLookupCombo; tblvouitems: TADOTable; bsSkinButton17: TbsSkinButton; bsSkinButton21: TbsSkinButton; bsSkinButton22: TbsSkinButton; bsSkinButton23: TbsSkinButton; bsSkinButton24: TbsSkinButton; bsSkinButton25: TbsSkinButton; Label37: TLabel; Edit10: TEdit; Label38: TLabel; Edit11: TEdit; Label39: TLabel; RxDBLookupCombo4: TRxDBLookupCombo; Label40: TLabel; RxDBLookupCombo1: TRxDBLookupCombo; Label1: TLabel; Label41: TLabel; RxDBLookupCombo3: TRxDBLookupCombo; Label42: TLabel; RxDBLookupCombo5: TRxDBLookupCombo; Label32: TLabel; RxDBLookupCombo7: TRxDBLookupCombo; Label43: TLabel; Edit12: TEdit; Label44: TLabel; RxDBLookupCombo8: TRxDBLookupCombo; Label45: TLabel; RxDBLookupCombo9: TRxDBLookupCombo; Label46: TLabel; RxDBLookupCombo10: TRxDBLookupCombo; Edit13: TEdit; Label47: TLabel; Label48: TLabel; RxDBLookupCombo11: TRxDBLookupCombo; Label49: TLabel; RxDBLookupCombo12: TRxDBLookupCombo; Label50: TLabel; RxDBLookupCombo13: TRxDBLookupCombo; Edit14: TEdit; Label51: TLabel; Label52: TLabel; RxDBLookupCombo14: TRxDBLookupCombo; Label53: TLabel; RxDBLookupCombo15: TRxDBLookupCombo; Label54: TLabel; RxDBLookupCombo16: TRxDBLookupCombo; Edit15: TEdit; Label55: TLabel; Label56: TLabel; Edit16: TEdit; Label57: TLabel; Edit17: TEdit; Label58: TLabel; Edit18: TEdit; Label59: TLabel; Edit19: TEdit; Label60: TLabel; Edit20: TEdit; Label61: TLabel; Edit21: TEdit; Label62: TLabel; Edit22: TEdit; Label63: TLabel; Edit23: TEdit; SaveDialog1: TSaveDialog; chkUsdExRate: TCheckBox; t_op_balanceDSDesigner24: TStringField; t_op_balanceDSDesigner25: TStringField; t_op_balanceDSDesigner26: TStringField; t_op_balanceDSDesigner27: TBCDField; t_op_balanceDSDesigner28: TBCDField; t_op_balanceDSDesigner29: TStringField; tab4: TbsSkinTabSheet; bsSkinPanel5: TbsSkinPanel; Label64: TLabel; Label66: TLabel; Label67: TLabel; Label68: TLabel; Label69: TLabel; Label70: TLabel; wwDBDateTimePicker22: TwwDBDateTimePicker; wwDBDateTimePicker23: TwwDBDateTimePicker; Edit24: TEdit; Edit25: TEdit; Edit26: TEdit; bsSkinButton27: TbsSkinButton; bsSkinCheckRadioBox7: TbsSkinCheckRadioBox; RxDBLookupCombo17: TRxDBLookupCombo; Label71: TLabel; RxDBLookupCombo18: TRxDBLookupCombo; Label72: TLabel; Edit27: TEdit; DBGridEh3: TDBGridEh; v_vouitems: TADOQuery; v_vouitems1: TDataSource; procedure FormShow(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure bsSkinPageControl1Change(Sender: TObject); procedure bsSkinButton10Click(Sender: TObject); procedure bsSkinButton3Click(Sender: TObject); procedure bsSkinButton5Click(Sender: TObject); procedure bsSkinButton4Click(Sender: TObject); procedure bsSkinButton6Click(Sender: TObject); procedure bsSkinButton7Click(Sender: TObject); procedure bsSkinButton8Click(Sender: TObject); procedure bsSkinButton9Click(Sender: TObject); procedure bsSkinButton11Click(Sender: TObject); procedure bsSkinButton14Click(Sender: TObject); procedure bsSkinButton15Click(Sender: TObject); procedure bsSkinButton1Click(Sender: TObject); procedure bsSkinButton18Click(Sender: TObject); procedure bsSkinButton20Click(Sender: TObject); procedure bsSkinButton2Click(Sender: TObject); procedure DBGridEh2DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumnEh; State: TGridDrawState); procedure DBGridEh1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumnEh; State: TGridDrawState); procedure DBGridEh4DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumnEh; State: TGridDrawState); procedure DBGridEh5DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumnEh; State: TGridDrawState); procedure DBGridEh6DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumnEh; State: TGridDrawState); procedure DBGridEh7DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumnEh; State: TGridDrawState); procedure bsSkinButton12Click(Sender: TObject); procedure bsSkinButton16Click(Sender: TObject); procedure bsSkinButton17Click(Sender: TObject); procedure bsSkinButton21Click(Sender: TObject); procedure bsSkinButton22Click(Sender: TObject); procedure bsSkinButton23Click(Sender: TObject); procedure bsSkinButton24Click(Sender: TObject); procedure bsSkinButton13Click(Sender: TObject); procedure bsSkinButton25Click(Sender: TObject); procedure Edit12KeyPress(Sender: TObject; var Key: Char); procedure Edit10KeyPress(Sender: TObject; var Key: Char); procedure bsSkinButton27Click(Sender: TObject); private procedure CreateMemTbl; function NewDrCrVou(fDataSet:TDataSet;ZDR:String;voudate:TDate;VSLVOY:String):String; function NewDCVou(fDataSet:TDataSet;ZDR:String;voudate:TDatetime):Boolean; { Private declarations } public function cw_client_yingshou_error():boolean; function cw_client_yingfu_error():boolean; function cw_client_shouru_error():boolean; function cw_client_chengben_error():boolean; procedure cw_add_1(op_type:integer); function get_str(i:integer;head_str:string):widestring; { Public declarations } end; var frm_cw_pingzheng: Tfrm_cw_pingzheng; frm_cw_pingzheng_open:boolean; cw_load,cw_load_group:integer; frm_cw_load_iflog:boolean; implementation uses u_main, my_sys_function, dmAccu, u_data_share, VouItemStlu, u_sys_progress, u_ch_piliang_seae, u_ch_piliang_seai, u_ch_piliang_aire, u_ch_piliang_airi; {$R *.dfm} function Tfrm_cw_pingzheng.NewDrCrVou(fDataSet:TDataSet;ZDR:String;voudate:TDate;VSLVOY:String):String; var aQuery,aQuery2:TADOQuery; Dr,Cr,UDr,UCr,UDrttl,UCrttl,UsdExrate,vatAmt:Real; OrdNo:integer; aPeriod:String; function GetMblno(BSno:String):String; var aQry:TAdoQuery; begin aQry:=CreateadoQuery; try aQry.Close; aQry.SQL.Clear; aQry.sql.add('select 主提单号 from v_op_bscard where 业务编号='''+Bsno+''''); aQry.Open; result:=aQry.fieldByName('主提单号').asstring; finally FreeAndNil(aQry); end; end; function GetCustID(CorpID,DC:String):String; var i:integer; aQuery:TADOQuery; begin aQuery:=createADOQuery; with aQuery do try Close;SQL.Clear; SQL.Add('select 财务应收帐款代码,财务应付帐款代码 from t_crm_client where 客户简称='''+CorpID+''''); Open; if DC='收' then Result:=fieldByName('财务应收帐款代码').AsString else Result:=fieldByName('财务应付帐款代码').AsString finally FreeAndNil(aQuery); end; end; function GetEmpID(EmplName:String):String; begin with dmAcc.tempQuery do try Close;SQL.Clear; SQL.Add('select 财务软件代码 from t_sys_employee where 姓名='''+EmplName+''''); Open; if not FieldByName('财务软件代码').IsNull then Result:=FieldByName('财务软件代码').AsString else Result:='0'; finally Close; end; end; function GetDeptID(DeptName:String):String; var aQry:TAdoQuery; begin aQry:=CreateadoQuery; try aQry.Close; aQry.SQL.Clear; aQry.sql.add('select 财务软件代码 from t_sys_department where 部门名称='''+DeptName+''''); aQry.Open; result:=aQry.fieldByName('财务软件代码').asstring; finally FreeAndNil(aQry); end; end; function GetEmpDeptID(EmplName:String):String; var aQry:TAdoQuery; begin aQry:=CreateadoQuery; try aQry.Close; aQry.SQL.Clear; aQry.sql.add('select e.部门名称,d.财务软件代码 from t_sys_employee e left join t_sys_department d on (d.部门名称=e.部门名称) where e.姓名='''+EmplName+''''); aQry.Open; result:=aQry.fieldByName('财务软件代码').asstring; finally FreeAndNil(aQry); end; end; begin Result:=''; aQuery:=createADOQuery; aQuery2:=CreateADOQuery; Dr:=0.0; Cr:=0.0; UDr:=0.0; UCr:=0.0; UDrttl:=0.00; UCrttl:=0.00; UsdExRate:=StrToFloatDef(Edit10.Text,7.8); vatAmt:=0.00; OrdNo:=dmAcc.AdotblVou.fieldByName('OrdNo').AsInteger; try with aQuery,SQL do begin Close;sql.Clear; Add('SELECT t_ch_fee.客户名称,t_ch_fee.类型,t_ch_fee.汇率,t_ch_fee.币别,SUM(t_ch_fee.金额) AS 金额,SUM(t_ch_fee.金额*t_ch_fee.汇率) AS 合计金额,SUM(财务税额) AS 财务税额 from t_ch_fee WHERE 类型=''收'' and 编号='''+fdataset.fieldbyname('编号').AsString+''' ' +'GROUP BY t_ch_fee.客户名称,t_ch_fee.类型,t_ch_fee.汇率,t_ch_fee.币别 ' +'ORDER BY t_ch_fee.客户名称,t_ch_fee.类型,t_ch_fee.币别'); Open; end; Result:=dmAcc.AdotblVou.fieldByName('VOUNO').AsString; aQuery.First; while not aQuery.Eof do begin dmAcc.AdotblVouItems.Insert; if aQuery.FieldByName('币别').AsString='USD' then begin dmAcc.AdotblVouItems.FieldByName('AccID').AsString:=AccInfo.DebitAccIDU; if chkUsdExRate.Checked then dmAcc.AdotblVouItems.FieldByName('FCYEXRATE').AsFloat:=aQuery.fieldByName('汇率').AsFloat else dmAcc.AdotblVouItems.FieldByName('FCYEXRATE').AsFloat:=UsdExRate; vatAmt:=vatAmt+StrToFloatDef(FormatFloat('0.00;-0.00;0.0', aQuery.fieldByName('财务税额').AsFloat*dmAcc.AdotblVouItems.FieldByName('FCYEXRATE').AsFloat), 0); dmAcc.AdotblVouItems.FieldByName('FCYDR').AsFloat:=StrToFloatDef(FormatFloat('0.00;-0.00;0.0', aQuery.fieldByName('金额').AsFloat), 0); dmAcc.AdotblVouItems.FieldByName('FCYCr').AsFloat:=0.0; if chkUsdExRate.Checked then dmAcc.AdotblVouItems.FieldByName('AmtDr').AsFloat:=StrToFloatDef(FormatFloat('0.00;-0.00;0.0', aQuery.fieldByName('金额').AsFloat*aQuery.fieldByName('汇率').AsFloat), 0) else dmAcc.AdotblVouItems.FieldByName('AmtDr').AsFloat:=StrToFloatDef(FormatFloat('0.00;-0.00;0.0', aQuery.fieldByName('金额').AsFloat*UsdExRate), 0); dmAcc.AdotblVouItems.FieldByName('AmtCr').AsFloat:=0.0; UDr:=UDR+StrToFloatDef(FormatFloat('0.00;-0.00;0.0', aQuery.fieldByName('金额').AsFloat), 0); if chkUsdExRate.Checked then UDrttl:=UDrttl+StrToFloatDef(FormatFloat('0.00;-0.00;0.0', aQuery.fieldByName('金额').AsFloat*aQuery.fieldByName('汇率').AsFloat), 0) else UDrttl:=UDrttl+StrToFloatDef(FormatFloat('0.00;-0.00;0.0', aQuery.fieldByName('金额').AsFloat*UsdExRate), 0); end else begin dmAcc.AdotblVouItems.FieldByName('AccID').AsString:=AccInfo.DebitAccID; dmAcc.AdotblVouItems.FieldByName('AmtDr').AsFloat:=StrToFloatDef(FormatFloat('0.00;-0.00;0.0',aQuery.fieldByName('金额').AsFloat),0); dmAcc.AdotblVouItems.FieldByName('AmtCr').AsFloat:=0.0; dmAcc.AdotblVouItems.FieldByName('FCYDR').AsFloat:=0.0; dmAcc.AdotblVouItems.FieldByName('FCYCr').AsFloat:=0.0; dmAcc.AdotblVouItems.FieldByName('FCYEXRATE').AsFloat:=0.0; vatAmt:=vatAmt+StrToFloatDef(FormatFloat('0.00;-0.00;0.0', aQuery.fieldByName('财务税额').AsFloat), 0); Dr:=DR+StrToFloatDef(FormatFloat('0.00;-0.00;0.0', aQuery.fieldByName('金额').AsFloat), 0); end; dmAcc.AdotblVouItems.FieldByName('EXPLAN').AsString:=GetMblno(fDataSet.fieldByName('业务编号').AsString); dmAcc.AdotblVouItems.FieldByName('CorpBf').AsString:='F'; dmAcc.AdotblVouItems.FieldByName('CORPID').AsString:=GetCustID(aQuery.fieldByName('客户名称').AsString,'收'); // dmAcc.AdotblVouItems.FieldByName('DEPTID').AsString:=GetDeptID(fDataSet.fieldByName('操作部门').AsString); // dmAcc.AdotblVouItems.FieldByName('EMPLID').AsString:=GetEmpID(fDataSet.fieldByName('操作员').AsString); dmAcc.AdotblVouItems.FieldByName('BSNO').AsString:=fDataSet.fieldByName('业务编号').AsString; dmAcc.AdotblVouItems.Post; aQuery.Next; end; if ((UDRttl+DR)<>0) and ((UDRttl+DR)>=0.0001) or ((UDRttl+DR)<=0.0001) then begin dmAcc.ADOtblVouItems.Insert; dmAcc.AdotblVouItems.FieldByName('AccID').AsString:=AccInfo.ProfitAccID; dmAcc.ADOtblVouItems.FieldByName('AmtCr').AsFloat:=UDRttl+DR-vatAmt; dmAcc.ADOtblVouItems.FieldByName('AmtDR').AsFloat:=0.0; dmAcc.ADOtblVouItems.FieldByName('FCYDR').AsFloat:=0.0; dmAcc.ADOtblVouItems.FieldByName('FCYCr').AsFloat:=0.0; dmAcc.ADOtblVouItems.FieldByName('FCYEXRATE').AsFloat:=0.0; dmAcc.ADOtblVouItems.FieldByName('EXPLAN').AsString:='收入'+GetMblno(fDataSet.fieldByName('业务编号').AsString); dmAcc.AdotblVouItems.FieldByName('BSNO').AsString:=fDataSet.fieldByName('业务编号').AsString; dmAcc.ADOtblVouItems.Post; end; if vatAmt<>0 then begin dmAcc.ADOtblVouItems.Insert; dmAcc.AdotblVouItems.FieldByName('AccID').AsString:=t_cw_design.FieldByName('销项税').AsString; dmAcc.ADOtblVouItems.FieldByName('AmtCr').AsFloat:=vatAmt; dmAcc.ADOtblVouItems.FieldByName('AmtDR').AsFloat:=0.0; dmAcc.ADOtblVouItems.FieldByName('FCYDR').AsFloat:=0.0; dmAcc.ADOtblVouItems.FieldByName('FCYCr').AsFloat:=0.0; dmAcc.ADOtblVouItems.FieldByName('FCYEXRATE').AsFloat:=0.0; dmAcc.ADOtblVouItems.FieldByName('EXPLAN').AsString:='销项税金'+GetMblno(fDataSet.fieldByName('业务编号').AsString); dmAcc.AdotblVouItems.FieldByName('BSNO').AsString:=fDataSet.fieldByName('业务编号').AsString; dmAcc.ADOtblVouItems.Post; end; with aQuery,SQL do begin Close;sql.Clear; Add('SELECT t_ch_fee.客户名称,t_ch_fee.类型,t_ch_fee.汇率,t_ch_fee.币别,SUM(t_ch_fee.金额) AS 金额,SUM(t_ch_fee.金额*t_ch_fee.汇率) AS 合计金额,SUM(财务税额) AS 财务税额 from t_ch_fee WHERE 类型=''付'' and 编号='''+fdataset.fieldbyname('编号').AsString+''' ' +'GROUP BY t_ch_fee.客户名称,t_ch_fee.类型,t_ch_fee.汇率,t_ch_fee.币别 ' +'ORDER BY t_ch_fee.客户名称,t_ch_fee.类型,t_ch_fee.币别'); Open; end; Result:=dmAcc.AdotblVou.fieldByName('VOUNO').AsString; aQuery.First; vatAmt:=0; while not aQuery.Eof do begin dmAcc.AdotblVouItems.Insert; if aQuery.FieldByName('币别').AsString='USD' then begin dmAcc.AdotblVouItems.FieldByName('AccID').AsString:=accinfo.CreditAccIDU; if chkUsdExRate.Checked then dmAcc.AdotblVouItems.FieldByName('FCYEXRATE').AsFloat:=aQuery.fieldByName('汇率').AsFloat else dmAcc.AdotblVouItems.FieldByName('FCYEXRATE').AsFloat:=UsdExRate; vatAmt:=vatAmt+StrToFloatDef(FormatFloat('0.00;-0.00;0.0', aQuery.fieldByName('财务税额').AsFloat*dmAcc.AdotblVouItems.FieldByName('FCYEXRATE').AsFloat), 0); dmAcc.AdotblVouItems.FieldByName('FCYCR').AsFloat:=StrToFloatDef(FormatFloat('0.00;-0.00;0.0',aQuery.fieldByName('金额').AsFloat),0); dmAcc.AdotblVouItems.FieldByName('FCYDr').AsFloat:=0.0; if chkUsdExRate.Checked then dmAcc.AdotblVouItems.FieldByName('AmtCr').AsFloat:=StrToFloatDef(FormatFloat('0.00;-0.00;0.0',aQuery.fieldByName('金额').AsFloat*aQuery.fieldByName('汇率').AsFloat), 0) else dmAcc.AdotblVouItems.FieldByName('AmtCr').AsFloat:=StrToFloatDef(FormatFloat('0.00;-0.00;0.0',aQuery.fieldByName('金额').AsFloat*UsdExRate), 0); dmAcc.AdotblVouItems.FieldByName('AmtDr').AsFloat:=0.0; UCr:=UCR+StrToFloatDef(FormatFloat('0.00;-0.00;0.0', aQuery.fieldByName('金额').AsFloat), 0); if chkUsdExRate.Checked then UCrttl:=UCrttl+StrToFloatDef(FormatFloat('0.00;-0.00;0.0', aQuery.fieldByName('金额').AsFloat*aQuery.fieldByName('汇率').AsFloat), 0) else UCrttl:=UCrttl+StrToFloatDef(FormatFloat('0.00;-0.00;0.0', aQuery.fieldByName('金额').AsFloat*UsdExRate), 0); end else begin dmAcc.AdotblVouItems.FieldByName('AccID').AsString:=accinfo.CreditAccID; dmAcc.AdotblVouItems.FieldByName('AmtCr').AsFloat:=StrToFloatDef(FormatFloat('0.00;-0.00;0.0',aQuery.fieldByName('金额').AsFloat),0); dmAcc.AdotblVouItems.FieldByName('AmtDR').AsFloat:=0.0; dmAcc.AdotblVouItems.FieldByName('FCYDR').AsFloat:=0.0; dmAcc.AdotblVouItems.FieldByName('FCYCr').AsFloat:=0.0; dmAcc.AdotblVouItems.FieldByName('FCYEXRATE').AsFloat:=0.0; // dmAcc.AdotblVouItems.FieldByName('EXPLAN').AsString:='应付'+aQuery.fieldByName('客户名称').AsString; vatAmt:=vatAmt+StrToFloatDef(FormatFloat('0.00;-0.00;0.0', aQuery.fieldByName('财务税额').AsFloat), 0); Cr:=CR+StrToFloatDef(FormatFloat('0.00;-0.00;0.0', aQuery.fieldByName('金额').AsFloat), 0); end; dmAcc.AdotblVouItems.FieldByName('EXPLAN').AsString:=GetMblno(fDataSet.fieldByName('业务编号').AsString); dmAcc.AdotblVouItems.FieldByName('CorpBf').AsString:='T'; dmAcc.AdotblVouItems.FieldByName('CORPID').AsString:=GetCustID(aQuery.fieldByName('客户名称').AsString,'付'); dmAcc.AdotblVouItems.FieldByName('BSNO').AsString:=fDataSet.fieldByName('业务编号').AsString; dmAcc.AdotblVouItems.Post; aQuery.Next; end; if ((UCRttl+CR)<>0) and ((UCRttl+CR)>=0.0001) or ((UCRttl+CR)<=-0.0001) then begin dmAcc.ADOtblVouItems.Insert; dmAcc.AdotblVouItems.FieldByName('AccID').AsString:=AccInfo.ImpProfitAccID; dmAcc.ADOtblVouItems.FieldByName('AmtCr').AsFloat:=0.0; dmAcc.ADOtblVouItems.FieldByName('AmtDR').AsFloat:=UCRttl+CR-vatAmt; dmAcc.ADOtblVouItems.FieldByName('FCYDR').AsFloat:=0.0; dmAcc.ADOtblVouItems.FieldByName('FCYCr').AsFloat:=0.0; dmAcc.ADOtblVouItems.FieldByName('FCYEXRATE').AsFloat:=0.0; dmAcc.ADOtblVouItems.FieldByName('EXPLAN').AsString:='支出'+GetMblno(fDataSet.fieldByName('业务编号').AsString); dmAcc.AdotblVouItems.FieldByName('BSNO').AsString:=fDataSet.fieldByName('业务编号').AsString; dmAcc.ADOtblVouItems.Post; end; if vatAmt<>0 then begin dmAcc.ADOtblVouItems.Insert; dmAcc.AdotblVouItems.FieldByName('AccID').AsString:=t_cw_design.FieldByName('进项税').AsString; dmAcc.ADOtblVouItems.FieldByName('AmtCr').AsFloat:=0.0; dmAcc.ADOtblVouItems.FieldByName('AmtDR').AsFloat:=UCRttl+CR-vatAmt; dmAcc.ADOtblVouItems.FieldByName('FCYDR').AsFloat:=0.0; dmAcc.ADOtblVouItems.FieldByName('FCYCr').AsFloat:=0.0; dmAcc.ADOtblVouItems.FieldByName('FCYEXRATE').AsFloat:=0.0; dmAcc.ADOtblVouItems.FieldByName('EXPLAN').AsString:='进项税金'+GetMblno(fDataSet.fieldByName('业务编号').AsString); dmAcc.AdotblVouItems.FieldByName('BSNO').AsString:=fDataSet.fieldByName('业务编号').AsString; dmAcc.ADOtblVouItems.Post; end; { if ((UDRttl+DR)-(UCRttl+CR))<>0 then begin dmAcc.ADOtblVouItems.Insert; dmAcc.ADOtblVouItems.FieldByName('AccID').AsString:=AccInfo.ProfitAccID; dmAcc.ADOtblVouItems.FieldByName('AmtCr').AsFloat:=(UDRttl+DR)-(UCRttl+CR); dmAcc.ADOtblVouItems.FieldByName('AmtDR').AsFloat:=0.0; dmAcc.ADOtblVouItems.FieldByName('FCYDR').AsFloat:=0.0; dmAcc.ADOtblVouItems.FieldByName('FCYCr').AsFloat:=0.0; dmAcc.ADOtblVouItems.FieldByName('FCYEXRATE').AsFloat:=0.0; dmAcc.ADOtblVouItems.FieldByName('EXPLAN').AsString:=GetMblno(fDataSet.fieldByName('业务编号').AsString); dmAcc.AdotblVouItems.FieldByName('DEPTID').AsString:=GetDeptID(fDataSet.fieldByName('操作部门').AsString); dmAcc.AdotblVouItems.FieldByName('EMPLID').AsString:=GetEmpID(fDataSet.fieldByName('操作员').AsString); dmAcc.ADOtblVouItems.Post; end; } except on e:Exception do begin ShowMessage(e.Message); end; end; // finally FreeAndNil(aQuery); FreeAndNil(aQuery2); // end; end; function Tfrm_cw_pingzheng.NewDCVou(fDataSet:TDataSet;ZDR:String;voudate:TDatetime):Boolean; var aQuery,aQuery2:TADOQuery; mAccOK:Boolean; aModal:TModalResult; StlAmtDR,StlAmtCR,StlUSDAmtDR,StlUSDAmtCR,UsdExRate:Double; ordno:integer; plan:string; function GetMblno(BSno:String):String; var aQry:TAdoQuery; begin aQry:=CreateadoQuery; try aQry.Close; aQry.SQL.Clear; aQry.sql.add('select 主提单号 from v_op_bscard where 业务编号='''+Bsno+''''); aQry.Open; result:=aQry.fieldByName('主提单号').asstring; finally FreeAndNil(aQry); end; end; function GetCustID(CorpID,DC:String):String; var i:integer; aQuery:TADOQuery; begin aQuery:=createADOQuery; with aQuery do try Close;SQL.Clear; SQL.Add('select 财务应收帐款代码,财务应付帐款代码 from t_crm_client where 客户简称='''+CorpID+''''); Open; if DC='收' then Result:=fieldByName('财务应收帐款代码').AsString else Result:=fieldByName('财务应付帐款代码').AsString finally FreeAndNil(aQuery); end; end; function GetEmpID(EmplName:String):String; begin with dmAcc.tempQuery do try Close;SQL.Clear; SQL.Add('select 财务软件代码 from t_sys_employee where 姓名='''+EmplName+''''); Open; if not FieldByName('财务软件代码').IsNull then Result:=FieldByName('财务软件代码').AsString else Result:='0'; finally Close; end; end; function GetDeptID(DeptName:String):String; var aQry:TAdoQuery; begin aQry:=CreateadoQuery; try aQry.Close; aQry.SQL.Clear; aQry.sql.add('select 财务软件代码 from t_sys_department where 部门名称='''+DeptName+''''); aQry.Open; result:=aQry.fieldByName('财务软件代码').asstring; finally FreeAndNil(aQry); end; end; function GetstlID(stlName:String):String; var aQry:TAdoQuery; begin aQry:=CreateadoQuery; try aQry.Close; aQry.SQL.Clear; aQry.sql.add('select 编码 from t_code_stlmode where 结算方式='''+stlName+''''); aQry.Open; if aQry.IsEmpty then result:='1' else result:=aQry.fieldByName('编码').asstring; finally FreeAndNil(aQry); end; end; function GetEmpDeptID(EmplName:String):String; var aQry:TAdoQuery; begin aQry:=CreateadoQuery; try aQry.Close; aQry.SQL.Clear; aQry.sql.add('select e.部门名称,d.财务软件代码 from t_sys_employee e left join t_sys_department d on (d.部门名称=e.部门名称) where e.姓名='''+EmplName+''''); aQry.Open; result:=aQry.fieldByName('财务软件代码').asstring; finally FreeAndNil(aQry); end; end; function GetBankAccid(bank:string):String; var aQuery:TAdoQuery; begin if fdataSet.FieldByName('结算方式').AsString='现金' then result:=t_cw_design.FieldByName('应收核算一').AsString else begin if bank='' then begin if (fDataSet.fieldbyname('银行').AsString='') and (fDataSet.fieldbyname('银行代码').AsString='') then begin result:=''; end else begin aQuery:=CreateAdoQuery; try with aQuery do begin Close;sql.Clear; sql.Add('select 财务软件代码 from t_sys_bank where 代码='''+fDataSet.fieldbyname('银行').AsString+''''); Open; if Recordcount<>0 then result:=fieldbyname('财务软件代码').AsString else result:=''; end; finally freeAndNil(aQuery); end; end; end else begin aQuery:=CreateAdoQuery; try with aQuery do begin Close;sql.Clear; if bank='USD' then sql.Add('select 财务软件代码 from t_sys_bank where 代码='''+fDataSet.fieldbyname('美元银行代码').AsString+'''') else sql.Add('select 财务软件代码 from t_sys_bank where 代码='''+fDataSet.fieldbyname('银行代码').AsString+''''); Open; if Recordcount<>0 then result:=fieldbyname('财务软件代码').AsString else result:=''; end; finally freeAndNil(aQuery); end; end; end; end; function getbsno(zhno:String):string; var absQuery:TAdoQuery; f:boolean; s:string; begin absQuery:=CreateAdoQuery; try with absQuery do begin close;SQL.Clear; SQL.Add('Select distinct 主提单号 from v_fee_do_bscard where 工作编号='''+zhno+''''); Open; if not IsEmpty then begin if Recordset.RecordCount=1 then begin result:=fieldbyname('主提单号').AsString; end else begin first; f:=true; while not eof do begin s:=fieldbyname('主提单号').AsString; if f then if length(s)>=5 then result:=copy(s,length(s)-4,5) else result:=fieldbyname('主提单号').AsString else if length(s)>=5 then result:=result+'/'+copy(s,length(s)-4,5) else result:=result+'/'+fieldbyname('主提单号').AsString; f:=false; Next; end; end; end; end; finally FreeAndNil(absQuery); end; end; begin Result:=false; aQuery:=CreateADOQuery; aQuery2:=CreateADOQuery; StlAmtDR:=0.00; StlAmtCR:=0.00; StlUSDAmtDR:=0.00; StlUSDAmtCR:=0.00; UsdExRate:=StrToFloatDef(Edit10.Text,7.8); with aQuery,SQL do begin if chkUsdExRate.Checked then begin Add('Select s.收付,s.币别,s.汇率,'); Add('sum(S.金额) 金额,sum(S.金额*s.汇率) 合计金额'); Add('from v_fee_balance_items s'); Add('where S.工作编号='''+fDataSet.fieldbyName('帐单编号').AsString+''''); Add('Group By s.收付,s.币别,s.汇率'); Add('Order By s.收付,s.币别,s.汇率'); end else begin Add('Select s.收付,s.币别,'); Add('sum(S.金额) 金额,sum(S.金额*s.汇率) 合计金额'); Add('from v_fee_balance_items s'); Add('where S.工作编号='''+fDataSet.fieldbyName('帐单编号').AsString+''''); Add('Group By s.收付,s.币别'); Add('Order By s.收付,s.币别'); end; Open; end; aQuery.First; OrdNo:=dmAcc.AdotblVou.fieldByName('OrdNo').AsInteger; dmAcc.AdotblVouItems.Open; while not aQuery.Eof do begin dmAcc.AdotblVouItems.Insert; if aQuery.FieldByName('收付').AsString='收' then begin if aQuery.FieldByName('币别').AsString='USD' then begin dmAcc.AdotblVouItems.FieldByName('AccID').AsString:=AccInfo.DebitAccIDU; if chkUsdExRate.Checked then dmAcc.AdotblVouItems.FieldByName('FCYEXRATE').AsFloat:=aQuery.fieldByName('汇率').AsFloat else dmAcc.AdotblVouItems.FieldByName('FCYEXRATE').AsFloat:=UsdExRate; dmAcc.AdotblVouItems.FieldByName('FCYDR').AsFloat:=0.00; dmAcc.AdotblVouItems.FieldByName('FCYCr').AsFloat:=StrToFloatDef(FormatFloat('0.00;-0.00;0.0', aQuery.fieldByName('金额').AsFloat), 0); dmAcc.AdotblVouItems.FieldByName('AmtDr').AsFloat:=0.00; if chkUsdExRate.Checked then dmAcc.AdotblVouItems.FieldByName('AmtCr').AsFloat:=StrToFloatDef(FormatFloat('0.00;-0.00;0.0', aQuery.fieldByName('金额').AsFloat*aQuery.fieldByName('汇率').AsFloat), 0) else dmAcc.AdotblVouItems.FieldByName('AmtCr').AsFloat:=StrToFloatDef(FormatFloat('0.00;-0.00;0.0', aQuery.fieldByName('金额').AsFloat*UsdExRate), 0); dmAcc.AdotblVouItems.FieldByName('CorpBf').AsString:='F'; if chkUsdExRate.Checked then StlUSDAmtDR:=StlUSDAmtDR+StrToFloatDef(FormatFloat('0.00;-0.00;0.0', aQuery.fieldByName('金额').AsFloat*aQuery.fieldByName('汇率').AsFloat), 0) else StlUSDAmtDR:=StlUSDAmtDR+StrToFloatDef(FormatFloat('0.00;-0.00;0.0', aQuery.fieldByName('金额').AsFloat*UsdExRate), 0); end else begin dmAcc.AdotblVouItems.FieldByName('AccID').AsString:=AccInfo.DebitAccID; dmAcc.AdotblVouItems.FieldByName('AmtDr').AsFloat:=0.00; dmAcc.AdotblVouItems.FieldByName('AmtCr').AsFloat:=StrToFloatDef(FormatFloat('0.00;-0.00;0.0',aQuery.fieldByName('金额').AsFloat),0); dmAcc.AdotblVouItems.FieldByName('FCYDR').AsFloat:=0.0; dmAcc.AdotblVouItems.FieldByName('FCYCr').AsFloat:=0.0; dmAcc.AdotblVouItems.FieldByName('FCYEXRATE').AsFloat:=0.0; dmAcc.AdotblVouItems.FieldByName('CorpBf').AsString:='F'; StlAmtDR:=StlAmtDR+StrToFloatDef(FormatFloat('0.00;-0.00;0.0', aQuery.fieldByName('金额').AsFloat), 0); end; end else begin if aQuery.FieldByName('币别').AsString='USD' then begin dmAcc.AdotblVouItems.FieldByName('AccID').AsString:=AccInfo.CreditAccIDU; if chkUsdExRate.Checked then dmAcc.AdotblVouItems.FieldByName('FCYEXRATE').AsFloat:=aQuery.fieldByName('汇率').AsFloat else dmAcc.AdotblVouItems.FieldByName('FCYEXRATE').AsFloat:=UsdExRate; dmAcc.AdotblVouItems.FieldByName('FCYCR').AsFloat:=0.0; dmAcc.AdotblVouItems.FieldByName('FCYDr').AsFloat:=StrToFloatDef(FormatFloat('0.00;-0.00;0.0',aQuery.fieldByName('金额').AsFloat),0); dmAcc.AdotblVouItems.FieldByName('AmtCr').AsFloat:=0.0; if chkUsdExRate.Checked then dmAcc.AdotblVouItems.FieldByName('AmtDr').AsFloat:=StrToFloatDef(FormatFloat('0.00;-0.00;0.0', aQuery.fieldByName('金额').AsFloat*aQuery.fieldByName('汇率').AsFloat), 0) else dmAcc.AdotblVouItems.FieldByName('AmtDr').AsFloat:=StrToFloatDef(FormatFloat('0.00;-0.00;0.0', aQuery.fieldByName('金额').AsFloat*UsdExRate), 0); dmAcc.AdotblVouItems.FieldByName('CorpBf').AsString:='T'; if chkUsdExRate.Checked then StlUSDAmtCR:=StlUSDAmtCR+StrToFloatDef(FormatFloat('0.00;-0.00;0.0', aQuery.fieldByName('金额').AsFloat*aQuery.fieldByName('汇率').AsFloat), 0) else StlUSDAmtCR:=StlUSDAmtCR+StrToFloatDef(FormatFloat('0.00;-0.00;0.0', aQuery.fieldByName('金额').AsFloat*UsdExRate), 0); end else begin dmAcc.AdotblVouItems.FieldByName('AccID').AsString:=AccInfo.CreditAccID; dmAcc.AdotblVouItems.FieldByName('AmtCr').AsFloat:=0.0; dmAcc.AdotblVouItems.FieldByName('AmtDR').AsFloat:=StrToFloatDef(FormatFloat('0.00;-0.00;0.0',aQuery.fieldByName('金额').AsFloat),0); dmAcc.AdotblVouItems.FieldByName('FCYDR').AsFloat:=0.0; dmAcc.AdotblVouItems.FieldByName('FCYCr').AsFloat:=0.0; dmAcc.AdotblVouItems.FieldByName('FCYEXRATE').AsFloat:=0.0; dmAcc.AdotblVouItems.FieldByName('CorpBf').AsString:='T'; StlAmtCR:=StlAmtCR+StrToFloatDef(FormatFloat('0.00;-0.00;0.0', aQuery.fieldByName('金额').AsFloat), 0); end; end; if aQuery.FieldByName('收付').AsString='收' then plan:='收'+fDataSet.fieldByName('客户名称').AsString else plan:='付代理运费'; dmAcc.AdotblVouItems.FieldByName('EXPLAN').AsString:=plan; dmAcc.AdotblVouItems.FieldByName('CORPID').AsString:=GetCustID(fDataSet.fieldByName('客户名称').AsString,aQuery.FieldByName('收付').AsString); // dmAcc.AdotblVouItems.FieldByName('DEPTID').AsString:=GetDeptID(aQuery.fieldByName('操作部门').AsString); // dmAcc.AdotblVouItems.FieldByName('EMPLID').AsString:=GetEmpID(aQuery.fieldByName('操作员').AsString); // dmAcc.AdotblVouItems.FieldByName('BSNO').AsString:=aQuery.fieldByName('业务编号').AsString; dmAcc.AdotblVouItems.Post; aQuery.next; end; if fDataSet.FieldByName('美元金额').Asfloat<>0 then begin dmAcc.AdotblVouItems.Insert; dmAcc.AdotblVouItems.FieldByName('AccID').AsString:=GetbankAccid('USD'); if fdataset.fieldbyname('类型').asstring='收' then begin dmAcc.AdotblVouItems.FieldByName('FCYDR').AsFloat:=StrToFloatDef(FormatFloat('0.00;-0.00;0.0',fdataset.fieldbyname('美元金额').asfloat),0); dmAcc.AdotblVouItems.FieldByName('FCYCr').AsFloat:=0.0; if chkUsdExRate.Checked then dmAcc.AdotblVouItems.FieldByName('FCYEXRATE').AsFloat:=aQuery.fieldByName('汇率').AsFloat else dmAcc.AdotblVouItems.FieldByName('FCYEXRATE').AsFloat:=UsdExRate; dmAcc.AdotblVouItems.FieldByName('AmtCr').AsFloat:=0.0; dmAcc.AdotblVouItems.FieldByName('AmtDR').AsFloat:=StlUSDAmtDR; end else begin dmAcc.AdotblVouItems.FieldByName('FCYDR').AsFloat:=0.00; dmAcc.AdotblVouItems.FieldByName('FCYCr').AsFloat:=StrToFloatDef(FormatFloat('0.00;-0.00;0.0',fdataset.fieldbyname('美元金额').asfloat),0); if chkUsdExRate.Checked then dmAcc.AdotblVouItems.FieldByName('FCYEXRATE').AsFloat:=aQuery.fieldByName('汇率').AsFloat else dmAcc.AdotblVouItems.FieldByName('FCYEXRATE').AsFloat:=UsdExRate; dmAcc.AdotblVouItems.FieldByName('AmtCr').AsFloat:=StlUSDAmtCR; dmAcc.AdotblVouItems.FieldByName('AmtDR').AsFloat:=0.00; end; dmAcc.AdotblVouItems.FieldByName('FSETTLCODE').AsString:=GetstlID(fdataset.fieldbyname('结算方式').asstring); dmAcc.AdotblVouItems.FieldByName('FSETTLENO').AsString:=fdataset.fieldbyname('美元相关号码').asstring; dmAcc.AdotblVouItems.FieldByName('EXPLAN').AsString:=plan; dmAcc.AdotblVouItems.post; end; if fDataSet.FieldByName('人民币金额').Asfloat<>0 then begin dmAcc.AdotblVouItems.Insert; dmAcc.AdotblVouItems.FieldByName('AccID').AsString:=GetbankAccid('RMB'); if fdataset.fieldbyname('类型').asstring='收' then begin dmAcc.AdotblVouItems.FieldByName('FCYDR').AsFloat:=0.0; dmAcc.AdotblVouItems.FieldByName('FCYCr').AsFloat:=0.0; dmAcc.AdotblVouItems.FieldByName('FCYEXRATE').AsFloat:=0.0; dmAcc.AdotblVouItems.FieldByName('AmtCr').AsFloat:=0.0; dmAcc.AdotblVouItems.FieldByName('AmtDR').AsFloat:=StlAmtDR; end else begin dmAcc.AdotblVouItems.FieldByName('FCYDR').AsFloat:=0.00; dmAcc.AdotblVouItems.FieldByName('FCYCr').AsFloat:=0.00; dmAcc.AdotblVouItems.FieldByName('FCYEXRATE').AsFloat:=0.00; dmAcc.AdotblVouItems.FieldByName('AmtCr').AsFloat:=StlAmtCR; dmAcc.AdotblVouItems.FieldByName('AmtDR').AsFloat:=0.00; end; dmAcc.AdotblVouItems.FieldByName('FSETTLCODE').AsString:=GetstlID(fdataset.fieldbyname('结算方式').asstring); dmAcc.AdotblVouItems.FieldByName('FSETTLENO').AsString:=fdataset.fieldbyname('相关号码').asstring; dmAcc.AdotblVouItems.FieldByName('EXPLAN').AsString:=plan; dmAcc.AdotblVouItems.post; end; if fdataset.fieldbyname('结算金额').asfloat<>0 then begin dmAcc.AdotblVouItems.Insert; dmAcc.AdotblVouItems.FieldByName('AccID').AsString:=GetbankAccid(''); if fDataSet.FieldByName('币别').AsString='USD'then begin if fdataset.fieldbyname('类型').asstring='收' then begin dmAcc.AdotblVouItems.FieldByName('FCYDR').AsFloat:=StrToFloatDef(FormatFloat('0.00;-0.00;0.0',fdataset.fieldbyname('结算金额').asfloat),0); dmAcc.AdotblVouItems.FieldByName('FCYCr').AsFloat:=0.0; if chkUsdExRate.Checked then dmAcc.AdotblVouItems.FieldByName('FCYEXRATE').AsFloat:=aQuery.fieldByName('汇率').AsFloat else dmAcc.AdotblVouItems.FieldByName('FCYEXRATE').AsFloat:=UsdExRate; dmAcc.AdotblVouItems.FieldByName('AmtCr').AsFloat:=0.0; dmAcc.AdotblVouItems.FieldByName('AmtDR').AsFloat:=StlAmtDR; end else begin dmAcc.AdotblVouItems.FieldByName('FCYDR').AsFloat:=0.00; dmAcc.AdotblVouItems.FieldByName('FCYCr').AsFloat:=StrToFloatDef(FormatFloat('0.00;-0.00;0.0',fdataset.fieldbyname('结算金额').asfloat),0); if chkUsdExRate.Checked then dmAcc.AdotblVouItems.FieldByName('FCYEXRATE').AsFloat:=aQuery.fieldByName('汇率').AsFloat else dmAcc.AdotblVouItems.FieldByName('FCYEXRATE').AsFloat:=UsdExRate; dmAcc.AdotblVouItems.FieldByName('AmtCr').AsFloat:=StlAmtCR; dmAcc.AdotblVouItems.FieldByName('AmtDR').AsFloat:=0.00; end; end else begin if fdataset.fieldbyname('类型').asstring='收' then begin dmAcc.AdotblVouItems.FieldByName('FCYDR').AsFloat:=0.0; dmAcc.AdotblVouItems.FieldByName('FCYCr').AsFloat:=0.0; dmAcc.AdotblVouItems.FieldByName('FCYEXRATE').AsFloat:=0.0; dmAcc.AdotblVouItems.FieldByName('AmtCr').AsFloat:=0.0; dmAcc.AdotblVouItems.FieldByName('AmtDR').AsFloat:=StlAmtDR; end else begin dmAcc.AdotblVouItems.FieldByName('FCYDR').AsFloat:=0.00; dmAcc.AdotblVouItems.FieldByName('FCYCr').AsFloat:=0.00; dmAcc.AdotblVouItems.FieldByName('FCYEXRATE').AsFloat:=0.00; dmAcc.AdotblVouItems.FieldByName('AmtCr').AsFloat:=StlAmtCR; dmAcc.AdotblVouItems.FieldByName('AmtDR').AsFloat:=0.00; end; end; dmAcc.AdotblVouItems.FieldByName('FSETTLCODE').AsString:=GetstlID(fdataset.fieldbyname('结算方式').asstring); dmAcc.AdotblVouItems.FieldByName('FSETTLENO').AsString:=fdataset.fieldbyname('相关号码').asstring; dmAcc.AdotblVouItems.FieldByName('EXPLAN').AsString:=plan; dmAcc.AdotblVouItems.post; end; FreeAndNil(aQuery); end; procedure Tfrm_cw_pingzheng.CreateMemTbl; begin memTblVou.Close; memTblVou.Fields.Clear; with memTblVou.FieldDefs do begin Clear; Add('Selected', ftsmallint, 0, false); Add('status', ftsmallint, 0, false); Add('VOUDATE', ftDate, 0, false); Add('accyear', ftinteger, 0, false); Add('AccMonth', ftsmallint, 0, false); Add('VKNO', ftString, 6, false); Add('VOUNO',ftString,16,false); Add('ORDNO', ftinteger, 0, false); Add('AMTDR', ftFloat, 0, false); Add('AMTCR', ftFloat, 0, false); Add('ATTACHS', ftinteger, 0, false); Add('SourceType', ftinteger, 0, false); Add('PREPARED', ftString,10, false); memTblVou.CreateTable; end; end; function Tfrm_cw_pingzheng.cw_client_yingshou_error():boolean; begin end; function Tfrm_cw_pingzheng.cw_client_yingfu_error():boolean; begin end; function Tfrm_cw_pingzheng.cw_client_shouru_error():boolean; begin end; function Tfrm_cw_pingzheng.cw_client_chengben_error():boolean; begin end; function Tfrm_cw_pingzheng.get_str(i:integer;head_str:string):widestring; var str:widestring; begin case i of 1: begin str:=head_str; if t_cw_design.fieldbyname('业务种类').asboolean then begin str:=str+'海运出口'; end; if t_cw_design.fieldbyname('业务编号').asboolean then begin str:=str+t_op_seae.fieldbyname('业务编号').asstring; end; if t_cw_design.fieldbyname('委托编号').asboolean then begin str:=str+t_op_seae.fieldbyname('委托编号').asstring; end; if t_cw_design.fieldbyname('主提单号').asboolean then begin str:=str+t_op_seae.fieldbyname('主提单号').asstring; end; if t_cw_design.fieldbyname('分提单号').asboolean then begin str:=str+t_op_seae.fieldbyname('分提单号').asstring; end; if t_cw_design.fieldbyname('揽货人').asboolean then begin str:=str+t_op_seae.fieldbyname('揽货人').asstring; end; if t_cw_design.fieldbyname('销售部门').asboolean then begin str:=str+t_op_seae.fieldbyname('销售部门').asstring; end; if t_cw_design.fieldbyname('船名').asboolean then begin str:=str+t_op_seae.fieldbyname('船名').asstring; end; if t_cw_design.fieldbyname('航次').asboolean then begin str:=str+t_op_seae.fieldbyname('航次').asstring; end; if t_cw_design.fieldbyname('航期').asboolean then begin str:=str+t_op_seae.fieldbyname('开船日期').asstring; end; if t_cw_design.fieldbyname('港口').asboolean then begin str:=str+t_op_seae.fieldbyname('卸货港').asstring; end; if t_cw_design.fieldbyname('操作员').asboolean then begin str:=str+t_op_seae.fieldbyname('操作员').asstring; end; end; 2: begin str:=head_str; if t_cw_design.fieldbyname('业务种类').asboolean then begin str:=str+'海运进口'; end; if t_cw_design.fieldbyname('业务编号').asboolean then begin str:=str+t_op_seai.fieldbyname('业务编号').asstring; end; if t_cw_design.fieldbyname('委托编号').asboolean then begin str:=str+t_op_seai.fieldbyname('委托编号').asstring; end; if t_cw_design.fieldbyname('主提单号').asboolean then begin str:=str+t_op_seai.fieldbyname('主提单号').asstring; end; if t_cw_design.fieldbyname('分提单号').asboolean then begin str:=str+t_op_seai.fieldbyname('分提单号').asstring; end; if t_cw_design.fieldbyname('揽货人').asboolean then begin str:=str+t_op_seai.fieldbyname('揽货人').asstring; end; if t_cw_design.fieldbyname('销售部门').asboolean then begin str:=str+t_op_seai.fieldbyname('销售部门').asstring; end; if t_cw_design.fieldbyname('船名').asboolean then begin str:=str+t_op_seai.fieldbyname('船名').asstring; end; if t_cw_design.fieldbyname('航次').asboolean then begin str:=str+t_op_seai.fieldbyname('航次').asstring; end; if t_cw_design.fieldbyname('航期').asboolean then begin str:=str+t_op_seai.fieldbyname('进口日期').asstring; end; if t_cw_design.fieldbyname('港口').asboolean then begin str:=str+t_op_seai.fieldbyname('装货港').asstring; end; if t_cw_design.fieldbyname('操作员').asboolean then begin str:=str+t_op_seai.fieldbyname('操作员').asstring; end; end; 3: begin str:=head_str; if t_cw_design.fieldbyname('业务种类').asboolean then begin str:=str+'空运出口'; end; if t_cw_design.fieldbyname('业务编号').asboolean then begin str:=str+t_op_aire.fieldbyname('业务编号').asstring; end; if t_cw_design.fieldbyname('委托编号').asboolean then begin str:=str+t_op_aire.fieldbyname('委托编号').asstring; end; if t_cw_design.fieldbyname('主提单号').asboolean then begin str:=str+t_op_aire.fieldbyname('主运单号').asstring; end; if t_cw_design.fieldbyname('分提单号').asboolean then begin str:=str+t_op_aire.fieldbyname('分运单号').asstring; end; if t_cw_design.fieldbyname('揽货人').asboolean then begin str:=str+t_op_aire.fieldbyname('揽货人').asstring; end; if t_cw_design.fieldbyname('销售部门').asboolean then begin str:=str+t_op_aire.fieldbyname('销售部门').asstring; end; if t_cw_design.fieldbyname('船名').asboolean or t_cw_design.fieldbyname('航次').asboolean then begin str:=str+t_op_aire.fieldbyname('一程航班').asstring; end; if t_cw_design.fieldbyname('航期').asboolean then begin str:=str+t_op_aire.fieldbyname('一程开航日期').asstring; end; if t_cw_design.fieldbyname('港口').asboolean then begin str:=str+t_op_aire.fieldbyname('目的港').asstring; end; if t_cw_design.fieldbyname('操作员').asboolean then begin str:=str+t_op_aire.fieldbyname('操作员').asstring; end; end; 4: begin str:=head_str; if t_cw_design.fieldbyname('业务种类').asboolean then begin str:=str+'空运进口'; end; if t_cw_design.fieldbyname('业务编号').asboolean then begin str:=str+t_op_airi.fieldbyname('业务编号').asstring; end; if t_cw_design.fieldbyname('委托编号').asboolean then begin str:=str+t_op_airi.fieldbyname('委托编号').asstring; end; if t_cw_design.fieldbyname('主提单号').asboolean then begin str:=str+t_op_airi.fieldbyname('主运单号').asstring; end; if t_cw_design.fieldbyname('分提单号').asboolean then begin str:=str+t_op_airi.fieldbyname('分运单号').asstring; end; if t_cw_design.fieldbyname('揽货人').asboolean then begin str:=str+t_op_airi.fieldbyname('揽货人').asstring; end; if t_cw_design.fieldbyname('销售部门').asboolean then begin str:=str+t_op_airi.fieldbyname('销售部门').asstring; end; if t_cw_design.fieldbyname('船名').asboolean or t_cw_design.fieldbyname('航次').asboolean then begin str:=str+t_op_airi.fieldbyname('航班号').asstring; end; if t_cw_design.fieldbyname('航期').asboolean then begin str:=str+t_op_airi.fieldbyname('进口日期').asstring; end; if t_cw_design.fieldbyname('港口').asboolean then begin str:=str+t_op_airi.fieldbyname('始发港').asstring; end; if t_cw_design.fieldbyname('操作员').asboolean then begin str:=str+t_op_airi.fieldbyname('操作员').asstring; end; end; end; result:=str; end; procedure Tfrm_cw_pingzheng.cw_add_1(op_type:integer); var num_accept_rmb,num_accept_usd,num_accept_all,num_pay_rmb,num_pay_usd,num_pay_all:real; bill_count:integer; if_do:boolean; get_date:Tdatetime; begin { try frm_cw_date:=Tfrm_cw_date.Create(application); frm_cw_date.ShowModal; if frm_cw_date.ModalResult = mrOk then begin if_do:=true; get_date:=frm_cw_date.wwDBDateTimePicker1.Date; end else if_do:=false;; finally frm_cw_date.free; frm_cw_date:=nil; end; if not if_do then exit; T_Voucher_Main.Requery(); T_Voucher_fen.Requery(); try T_Voucher_Main.Insert; T_Voucher_Main['FDate']:=get_date;//t_yingshou.DataSource.DataSet.fieldbyname('会计期间').value; T_Voucher_Main['FYear']:= strtoint(FormatDateTime('yyyy',t_yingshou.DataSource.DataSet.fieldbyname('会计期间').value)); T_Voucher_Main['FPeriod']:= strtoint(FormatDateTime('mm',t_yingshou.DataSource.DataSet.fieldbyname('会计期间').value)); T_Voucher_Main['FGroupID']:=t_cw_design.fieldbyname('转帐凭证字').asinteger; T_Voucher_Max_num.close; T_Voucher_Max_num.Parameters.ParamByName('FYear').value:= strtoint(FormatDateTime('yyyy',t_yingshou.DataSource.DataSet.fieldbyname('会计期间').value)); T_Voucher_Max_num.Parameters.ParamByName('FPeriod').value:= strtoint(FormatDateTime('mm',t_yingshou.DataSource.DataSet.fieldbyname('会计期间').value)); T_Voucher_Max_num.Parameters.ParamByName('FGroupID').value:=t_cw_design.fieldbyname('转帐凭证字').asinteger; T_Voucher_Max_num.open; if T_Voucher_Max_num.IsEmpty then T_Voucher_Main['FNumber']:=1 else T_Voucher_Main['FNumber']:=T_Voucher_Max_num.fieldbyname('FNumber').asinteger+1; T_Voucher_Main['FReference']:=''; T_Voucher_Main['FExplanation']:=frm_cw_pingzheng.get_str(op_type,''); T_Voucher_Main['FAttachments']:=1; T_Voucher_Main['FEntryCount']:=t_yingshou.RecordCount+t_yingfu.RecordCount+t_shouru.RecordCount+t_chengben.RecordCount; T_Voucher_Main['FDebitTotal']:=0; T_Voucher_Main['FCreditTotal']:=0; T_Voucher_Main['FInternalInd']:=''; T_Voucher_Main['FPreparerID']:=cw_load; T_Voucher_Main['FHandler']:=''; T_Voucher_Main['FOwnerGroupID']:=cw_load_group; T_Voucher_Main['FObjectName']:=''; T_Voucher_Main['FParameter']:=''; T_Voucher_Main['FTransDate']:=t_yingshou.DataSource.DataSet.fieldbyname('会计期间').value; T_Voucher_Max_seriel.close; T_Voucher_Max_seriel.Parameters.ParamByName('FYear').value:= strtoint(FormatDateTime('yyyy',t_yingshou.DataSource.DataSet.fieldbyname('会计期间').value)); T_Voucher_Max_seriel.open; if T_Voucher_Max_seriel.isempty then T_Voucher_Main['FSerialNum']:=1 else T_Voucher_Main['FSerialNum']:=T_Voucher_Max_seriel.fieldbyname('FSerialNum').asinteger+1; T_Voucher_Main.post; except if T_Voucher_Main.state=dsinsert then T_Voucher_Main.cancel; showmessage('生成凭证失败!!'); exit; end; T_Voucher_Max.requery; T_Voucher_Main.close; T_Voucher_Main.sql.clear; T_Voucher_Main.sql.add('select * from t_Voucher where FVoucherID='+T_Voucher_Max.fieldbyname('FNext').asstring); T_Voucher_Main.open; //应收帐款 bill_count:=0; t_yingshou.first; while not t_yingshou.eof do begin try T_Voucher_fen.insert; T_Voucher_fen['FVoucherID']:=T_Voucher_Main.fieldbyname('FVoucherID').value; T_Voucher_fen['FEntryID']:=bill_count; T_Voucher_fen['FExplanation']:=frm_cw_pingzheng.get_str(op_type,'应收'); T_Voucher_fen['FAccountID']:=t_yingshou.fieldbyname('科目标示').asinteger; T_Voucher_fen['FAccountID2']:=t_yingshou.fieldbyname('科目标示').asinteger; if t_cw_client.locate('客户简称',t_yingshou.fieldbyname('客户名称').asstring,[]) then begin T_Voucher_fen['FDetailID']:=t_cw_client.fieldbyname('应收客户代码').asinteger; end; case t_cw_design.fieldbyname('生成办法').asinteger of 1: begin T_Voucher_fen['FCurrencyID']:=t_cw_design.fieldbyname('币别RMB').asinteger; T_Voucher_fen['FExchangeRate']:=1; if t_yingshou.fieldbyname('金额').asfloat>0 then begin T_Voucher_fen['FAmountFor']:=s_w(2,t_yingshou.fieldbyname('金额').asfloat); T_Voucher_fen['FAmount']:=s_w(2,t_yingshou.fieldbyname('金额').asfloat); T_Voucher_fen['FDC']:=1; num_accept_all:=num_accept_all+s_w(2,t_yingshou.fieldbyname('金额').asfloat); end else begin T_Voucher_fen['FAmountFor']:=s_w(2,t_yingshou.fieldbyname('金额').asfloat*-1); T_Voucher_fen['FAmount']:=s_w(2,t_yingshou.fieldbyname('金额').asfloat*-1); T_Voucher_fen['FDC']:=0; num_pay_all:=num_pay_all+s_w(2,t_yingshou.fieldbyname('金额').asfloat*-1); end; end; 2: begin if t_yingshou.fieldbyname('币别').asstring='USD'then begin T_Voucher_fen['FCurrencyID']:=t_cw_design.fieldbyname('币别USD').asinteger; if T_Currency.Locate('FCurrencyID',t_cw_design.fieldbyname('币别USD').asinteger,[])then T_Voucher_fen['FExchangeRate']:=T_Currency.fieldbyname('FExchangeRate').asfloat; if t_yingshou.fieldbyname('金额').asfloat>0 then begin T_Voucher_fen['FAmountFor']:=s_w(2,t_yingshou.fieldbyname('金额').asfloat); T_Voucher_fen['FAmount']:=s_w(2,t_yingshou.fieldbyname('金额').asfloat* T_Currency.fieldbyname('FExchangeRate').asfloat); T_Voucher_fen['FDC']:=1; num_accept_all:=num_accept_all+s_w(2,t_yingshou.fieldbyname('金额').asfloat* T_Currency.fieldbyname('FExchangeRate').asfloat); end else begin T_Voucher_fen['FAmountFor']:=s_w(2,t_yingshou.fieldbyname('金额').asfloat*-1); T_Voucher_fen['FAmount']:=s_w(2,t_yingshou.fieldbyname('金额').asfloat*-1* T_Currency.fieldbyname('FExchangeRate').asfloat); T_Voucher_fen['FDC']:=0; num_pay_all:=num_pay_all+s_w(2,t_yingshou.fieldbyname('金额').asfloat* T_Currency.fieldbyname('FExchangeRate').asfloat*-1); end; end else begin T_Voucher_fen['FCurrencyID']:=t_cw_design.fieldbyname('币别RMB').asinteger; T_Voucher_fen['FExchangeRate']:=1; if t_yingshou.fieldbyname('金额').asfloat>0 then begin T_Voucher_fen['FAmountFor']:=s_w(2,t_yingshou.fieldbyname('金额').asfloat); T_Voucher_fen['FAmount']:=s_w(2,t_yingshou.fieldbyname('金额').asfloat); T_Voucher_fen['FDC']:=1; num_accept_all:=num_accept_all+s_w(2,t_yingshou.fieldbyname('金额').asfloat); end else begin T_Voucher_fen['FAmountFor']:=s_w(2,t_yingshou.fieldbyname('金额').asfloat*-1); T_Voucher_fen['FAmount']:=s_w(2,t_yingshou.fieldbyname('金额').asfloat*-1); T_Voucher_fen['FDC']:=0; num_pay_all:=num_pay_all+s_w(2,t_yingshou.fieldbyname('金额').asfloat*-1); end; end; end; end; T_Voucher_fen.post; bill_count:=bill_count+1; except if T_Voucher_fen.state=dsinsert then T_Voucher_fen.cancel; while not T_Voucher_fen.eof do T_Voucher_fen.delete; T_Voucher_main.delete; showmessage('生成凭证失败!!'); exit; end; t_yingshou.next; end; //应付帐款 t_yingfu.first; while not t_yingfu.eof do begin try T_Voucher_fen.insert; T_Voucher_fen['FVoucherID']:=T_Voucher_Main.fieldbyname('FVoucherID').value; T_Voucher_fen['FEntryID']:=bill_count; T_Voucher_fen['FExplanation']:=frm_cw_pingzheng.get_str(op_type,'应付'); T_Voucher_fen['FAccountID']:=t_yingfu.fieldbyname('科目标示').asinteger; T_Voucher_fen['FAccountID2']:=t_yingfu.fieldbyname('科目标示').asinteger; if t_cw_client.locate('客户简称',t_yingfu.fieldbyname('客户名称').asstring,[]) then begin T_Voucher_fen['FDetailID']:=t_cw_client.fieldbyname('应付客户代码').asinteger; end; case t_cw_design.fieldbyname('生成办法').asinteger of 1: begin T_Voucher_fen['FCurrencyID']:=t_cw_design.fieldbyname('币别RMB').asinteger; T_Voucher_fen['FExchangeRate']:=1; if t_yingfu.fieldbyname('金额').asfloat>0 then begin T_Voucher_fen['FAmountFor']:=s_w(2,t_yingfu.fieldbyname('金额').asfloat); T_Voucher_fen['FAmount']:=s_w(2,t_yingfu.fieldbyname('金额').asfloat); T_Voucher_fen['FDC']:=0; num_pay_all:=num_pay_all+s_w(2,t_yingfu.fieldbyname('金额').asfloat); end else begin T_Voucher_fen['FAmountFor']:=s_w(2,t_yingfu.fieldbyname('金额').asfloat*-1); T_Voucher_fen['FAmount']:=s_w(2,t_yingfu.fieldbyname('金额').asfloat*-1); T_Voucher_fen['FDC']:=1; num_accept_all:=num_accept_all+s_w(2,t_yingfu.fieldbyname('金额').asfloat*-1); end; end; 2: begin if t_yingfu.fieldbyname('币别').asstring='USD'then begin T_Voucher_fen['FCurrencyID']:=t_cw_design.fieldbyname('币别USD').asinteger; if T_Currency.Locate('FCurrencyID',t_cw_design.fieldbyname('币别USD').asinteger,[])then T_Voucher_fen['FExchangeRate']:=T_Currency.fieldbyname('FExchangeRate').asfloat; if t_yingfu.fieldbyname('金额').asfloat>0 then begin T_Voucher_fen['FAmountFor']:=s_w(2,t_yingfu.fieldbyname('金额').asfloat); T_Voucher_fen['FAmount']:=s_w(2,t_yingfu.fieldbyname('金额').asfloat* T_Currency.fieldbyname('FExchangeRate').asfloat); T_Voucher_fen['FDC']:=0; num_pay_all:=num_pay_all+s_w(2,t_yingfu.fieldbyname('金额').asfloat* T_Currency.fieldbyname('FExchangeRate').asfloat); end else begin T_Voucher_fen['FAmountFor']:=s_w(2,t_yingfu.fieldbyname('金额').asfloat*-1); T_Voucher_fen['FAmount']:=s_w(2,t_yingfu.fieldbyname('金额').asfloat*-1* T_Currency.fieldbyname('FExchangeRate').asfloat); T_Voucher_fen['FDC']:=1; num_accept_all:=num_accept_all+s_w(2,t_yingfu.fieldbyname('金额').asfloat* T_Currency.fieldbyname('FExchangeRate').asfloat*-1); end; end else begin T_Voucher_fen['FCurrencyID']:=t_cw_design.fieldbyname('币别RMB').asinteger; T_Voucher_fen['FExchangeRate']:=1; if t_yingfu.fieldbyname('金额').asfloat>0 then begin T_Voucher_fen['FAmountFor']:=s_w(2,t_yingfu.fieldbyname('金额').asfloat); T_Voucher_fen['FAmount']:=s_w(2,t_yingfu.fieldbyname('金额').asfloat); T_Voucher_fen['FDC']:=0; num_pay_all:=num_pay_all+s_w(2,t_yingfu.fieldbyname('金额').asfloat); end else begin T_Voucher_fen['FAmountFor']:=s_w(2,t_yingfu.fieldbyname('金额').asfloat*-1); T_Voucher_fen['FAmount']:=s_w(2,t_yingfu.fieldbyname('金额').asfloat*-1); T_Voucher_fen['FDC']:=1; num_accept_all:=num_accept_all+s_w(2,t_yingfu.fieldbyname('金额').asfloat*-1); end; end; end; end; T_Voucher_fen.post; bill_count:=bill_count+1; except if T_Voucher_fen.state=dsinsert then T_Voucher_fen.cancel; while not T_Voucher_fen.eof do T_Voucher_fen.delete; T_Voucher_main.delete; showmessage('生成凭证失败!!'); exit; end; t_yingfu.next; end; //业务收入 t_shouru.first; while not t_shouru.eof do begin if t_shouru.fieldbyname('科目标示').asstring<>''then begin try T_Voucher_fen.insert; T_Voucher_fen['FVoucherID']:=T_Voucher_Main.fieldbyname('FVoucherID').value; T_Voucher_fen['FEntryID']:=bill_count; T_Voucher_fen['FExplanation']:=frm_cw_pingzheng.get_str(op_type,'收入'); T_Voucher_fen['FAccountID']:=t_shouru.fieldbyname('科目标示').asinteger; T_Voucher_fen['FAccountID2']:=t_shouru.fieldbyname('科目标示').asinteger; case t_cw_design.fieldbyname('生成办法').asinteger of 1: begin T_Voucher_fen['FCurrencyID']:=t_cw_design.fieldbyname('币别RMB').asinteger; T_Voucher_fen['FExchangeRate']:=1; if t_shouru.fieldbyname('金额').asfloat>0 then begin T_Voucher_fen['FAmountFor']:=s_w(2,t_shouru.fieldbyname('金额').asfloat); T_Voucher_fen['FAmount']:=s_w(2,t_shouru.fieldbyname('金额').asfloat); T_Voucher_fen['FDC']:=0; num_pay_all:=num_pay_all+s_w(2,t_shouru.fieldbyname('金额').asfloat); end else begin T_Voucher_fen['FAmountFor']:=s_w(2,t_shouru.fieldbyname('金额').asfloat*-1); T_Voucher_fen['FAmount']:=s_w(2,t_shouru.fieldbyname('金额').asfloat*-1); T_Voucher_fen['FDC']:=1; num_accept_all:=num_accept_all+s_w(2,t_shouru.fieldbyname('金额').asfloat*-1); end; end; 2: begin if t_shouru.fieldbyname('币别').asstring='USD'then begin T_Voucher_fen['FCurrencyID']:=t_cw_design.fieldbyname('币别USD').asinteger; if T_Currency.Locate('FCurrencyID',t_cw_design.fieldbyname('币别USD').asinteger,[])then T_Voucher_fen['FExchangeRate']:=T_Currency.fieldbyname('FExchangeRate').asfloat; if t_shouru.fieldbyname('金额').asfloat>0 then begin T_Voucher_fen['FAmountFor']:=s_w(2,t_shouru.fieldbyname('金额').asfloat); T_Voucher_fen['FAmount']:=s_w(2,t_shouru.fieldbyname('金额').asfloat* T_Currency.fieldbyname('FExchangeRate').asfloat); T_Voucher_fen['FDC']:=0; num_pay_all:=num_pay_all+s_w(2,t_shouru.fieldbyname('金额').asfloat* T_Currency.fieldbyname('FExchangeRate').asfloat); end else begin T_Voucher_fen['FAmountFor']:=s_w(2,t_shouru.fieldbyname('金额').asfloat*-1); T_Voucher_fen['FAmount']:=s_w(2,t_shouru.fieldbyname('金额').asfloat*-1* T_Currency.fieldbyname('FExchangeRate').asfloat); T_Voucher_fen['FDC']:=1; num_accept_all:=num_accept_all+s_w(2,t_shouru.fieldbyname('金额').asfloat* T_Currency.fieldbyname('FExchangeRate').asfloat*-1); end; end else begin T_Voucher_fen['FCurrencyID']:=t_cw_design.fieldbyname('币别RMB').asinteger; T_Voucher_fen['FExchangeRate']:=1; if t_shouru.fieldbyname('金额').asfloat>0 then begin T_Voucher_fen['FAmountFor']:=s_w(2,t_shouru.fieldbyname('金额').asfloat); T_Voucher_fen['FAmount']:=s_w(2,t_shouru.fieldbyname('金额').asfloat); T_Voucher_fen['FDC']:=0; num_pay_all:=num_pay_all+s_w(2,t_shouru.fieldbyname('金额').asfloat); end else begin T_Voucher_fen['FAmountFor']:=s_w(2,t_shouru.fieldbyname('金额').asfloat*-1); T_Voucher_fen['FAmount']:=s_w(2,t_shouru.fieldbyname('金额').asfloat*-1); T_Voucher_fen['FDC']:=1; num_accept_all:=num_accept_all+s_w(2,t_shouru.fieldbyname('金额').asfloat*-1); end; end; end; end; T_Voucher_fen.post; bill_count:=bill_count+1; except if T_Voucher_fen.state=dsinsert then T_Voucher_fen.cancel; while not T_Voucher_fen.eof do T_Voucher_fen.delete; T_Voucher_main.delete; showmessage('生成凭证失败!!'); exit; end; end; t_shouru.next; end; //业务成本 t_chengben.first; while not t_chengben.eof do begin if t_chengben.fieldbyname('科目标示').asstring<>''then begin try T_Voucher_fen.insert; T_Voucher_fen['FVoucherID']:=T_Voucher_Main.fieldbyname('FVoucherID').value; T_Voucher_fen['FEntryID']:=bill_count; T_Voucher_fen['FExplanation']:=frm_cw_pingzheng.get_str(op_type,'成本'); T_Voucher_fen['FAccountID']:=t_chengben.fieldbyname('科目标示').asinteger; T_Voucher_fen['FAccountID2']:=t_chengben.fieldbyname('科目标示').asinteger; case t_cw_design.fieldbyname('生成办法').asinteger of 1: begin T_Voucher_fen['FCurrencyID']:=t_cw_design.fieldbyname('币别RMB').asinteger; T_Voucher_fen['FExchangeRate']:=1; if t_chengben.fieldbyname('金额').asfloat>0 then begin T_Voucher_fen['FAmountFor']:=s_w(2,t_chengben.fieldbyname('金额').asfloat); T_Voucher_fen['FAmount']:=s_w(2,t_chengben.fieldbyname('金额').asfloat); T_Voucher_fen['FDC']:=1; num_accept_all:=num_accept_all+s_w(2,t_chengben.fieldbyname('金额').asfloat); end else begin T_Voucher_fen['FAmountFor']:=s_w(2,t_chengben.fieldbyname('金额').asfloat*-1); T_Voucher_fen['FAmount']:=s_w(2,t_chengben.fieldbyname('金额').asfloat*-1); T_Voucher_fen['FDC']:=0; num_pay_all:=num_pay_all+s_w(2,t_chengben.fieldbyname('金额').asfloat*-1); end; end; 2: begin if t_chengben.fieldbyname('币别').asstring='USD'then begin T_Voucher_fen['FCurrencyID']:=t_cw_design.fieldbyname('币别USD').asinteger; if T_Currency.Locate('FCurrencyID',t_cw_design.fieldbyname('币别USD').asinteger,[])then T_Voucher_fen['FExchangeRate']:=T_Currency.fieldbyname('FExchangeRate').asfloat; if t_chengben.fieldbyname('金额').asfloat>0 then begin T_Voucher_fen['FAmountFor']:=s_w(2,t_chengben.fieldbyname('金额').asfloat); T_Voucher_fen['FAmount']:=s_w(2,t_chengben.fieldbyname('金额').asfloat* T_Currency.fieldbyname('FExchangeRate').asfloat); T_Voucher_fen['FDC']:=1; num_accept_all:=num_accept_all+s_w(2,t_chengben.fieldbyname('金额').asfloat* T_Currency.fieldbyname('FExchangeRate').asfloat); end else begin T_Voucher_fen['FAmountFor']:=s_w(2,t_chengben.fieldbyname('金额').asfloat*-1); T_Voucher_fen['FAmount']:=s_w(2,t_chengben.fieldbyname('金额').asfloat*-1* T_Currency.fieldbyname('FExchangeRate').asfloat); T_Voucher_fen['FDC']:=0; num_pay_all:=num_pay_all+s_w(2,t_chengben.fieldbyname('金额').asfloat* T_Currency.fieldbyname('FExchangeRate').asfloat*-1); end; end else begin T_Voucher_fen['FCurrencyID']:=t_cw_design.fieldbyname('币别RMB').asinteger; T_Voucher_fen['FExchangeRate']:=1; if t_chengben.fieldbyname('金额').asfloat>0 then begin T_Voucher_fen['FAmountFor']:=s_w(2,t_chengben.fieldbyname('金额').asfloat); T_Voucher_fen['FAmount']:=s_w(2,t_chengben.fieldbyname('金额').asfloat); T_Voucher_fen['FDC']:=1; num_accept_all:=num_accept_all+s_w(2,t_chengben.fieldbyname('金额').asfloat); end else begin T_Voucher_fen['FAmountFor']:=s_w(2,t_chengben.fieldbyname('金额').asfloat*-1); T_Voucher_fen['FAmount']:=s_w(2,t_chengben.fieldbyname('金额').asfloat*-1); T_Voucher_fen['FDC']:=0; num_pay_all:=num_pay_all+s_w(2,t_chengben.fieldbyname('金额').asfloat*-1); end; end; end; end; T_Voucher_fen.post; bill_count:=bill_count+1; except if T_Voucher_fen.state=dsinsert then T_Voucher_fen.cancel; while not T_Voucher_fen.eof do T_Voucher_fen.delete; T_Voucher_main.delete; showmessage('生成凭证失败!!'); exit; end; end; t_chengben.next; end; if round(num_accept_all)<>round(num_pay_all) then begin showmessage('凭证借:'+floattostr(num_accept_all)+',贷:'+floattostr(num_pay_all)+',借贷不平!!'); T_Voucher_fen.first; while not T_Voucher_fen.eof do begin T_Voucher_fen.delete; end; T_Voucher_main.delete; exit; end; T_Voucher_main.edit; T_Voucher_main['FDebitTotal']:=num_accept_all; T_Voucher_main['FCreditTotal']:=num_pay_all; T_Voucher_main.post; try t_chengben.DataSource.DataSet.edit; t_chengben.DataSource.DataSet['财务']:=1; t_chengben.DataSource.DataSet['财务凭证']:=T_Voucher_Main.fieldbyname('FVoucherID').asstring; t_chengben.DataSource.DataSet.post; except if T_Voucher_fen.state=dsinsert then T_Voucher_fen.cancel; if T_Voucher_main.state=dsinsert then T_Voucher_main.cancel; if t_chengben.DataSource.DataSet.state=dsinsert then t_chengben.DataSource.DataSet.cancel; while not T_Voucher_fen.eof do T_Voucher_fen.delete; T_Voucher_main.delete; showmessage('生成凭证失败!!'); exit; end; } end; procedure Tfrm_cw_pingzheng.FormShow(Sender: TObject); var str:widestring; inifile:tinifile ; begin inifile:=Tinifile.Create(ExtractFilePath(application.ExeName)+'main.ini'); try Edit10.Text:=inifile.READString('PINGZHENG','USDRATE','6.8'); finally inifile.free; end ; t_cw_design.open; AccInfo.DebitAccID:=t_cw_design.fieldbyname('应收账款').AsString; AccInfo.DebitAccIDU:=t_cw_design.fieldbyname('应收账款外币').AsString; AccInfo.CreditAccID:=t_cw_design.fieldbyname('应付账款').AsString; AccInfo.CreditAccIDU:=t_cw_design.fieldbyname('应付账款外币').AsString; AccInfo.ProfitAccID:=t_cw_design.fieldbyname('主营业务收入').AsString; AccInfo.ImpProfitAccID:=t_cw_design.fieldbyname('主营业务支出').AsString; AccInfo.ProfitAccIDU:=t_cw_design.fieldbyname('主营收入外币').AsString; AccInfo.ImpProfitAccIDU:=t_cw_design.fieldbyname('主营支出外币').AsString; AccInfo.Cash:=t_cw_design.fieldbyname('应收核算一').AsString; AccInfo.RMB:=t_cw_design.fieldbyname('应收核算二').AsString; AccInfo.USD:=t_cw_design.fieldbyname('应收核算三').AsString; AccInfo.charge:=t_cw_design.fieldbyname('应付核算一').AsString; CreateMemTbl; wwDBDateTimePicker21.Date:=now; RxDBLookupCombo6.DisplayValue:=employee; end; procedure Tfrm_cw_pingzheng.FormClose(Sender: TObject; var Action: TCloseAction); var inifile:tinifile ; begin inifile:=Tinifile.Create(ExtractFilePath(application.ExeName)+'main.ini'); try inifile.WriteString('PINGZHENG','USDRATE',Edit10.Text); finally inifile.free; end ; frm_cw_pingzheng_open:=false; frm_cw_load_iflog:=false; frm_cw_pingzheng.Hide; frm_cw_pingzheng.ManualFloat(frm_cw_pingzheng.BoundsRect ); frm_main.freeTabs('frm_cw_pingzheng'); action:=cafree; frm_cw_pingzheng:=nil; end; procedure Tfrm_cw_pingzheng.bsSkinPageControl1Change(Sender: TObject); begin if frm_cw_pingzheng_open then begin t_op_seae.close; t_op_seai.close; t_op_aire.close; t_op_airi.close; end; end; procedure Tfrm_cw_pingzheng.bsSkinButton10Click(Sender: TObject); var str:widestring; begin str:='where 费用状态='+''''+'费用封帐'+''''; // str:='where 1=1 '; if not bsSkinCheckRadioBox1.Checked then str:=str+' and (财务 is null or 财务=0)'; if Edit4.text<>'' then begin if Edit11.text<>'' then str:=str+' and 业务编号>='+''''+Edit4.text+''''+' and 业务编号<='+''''+Edit11.text+'''' else str:=str+' and 业务编号 like '+''''+'%'+Edit4.text+'%'+''''; end; if Edit16.text<>'' then begin if Edit17.text<>'' then str:=str+' and 财务凭证>='+''''+Edit16.text+''''+' and 财务凭证<='+''''+Edit17.text+'''' else str:=str+' and 财务凭证 like '+''''+'%'+Edit16.text+'%'+''''; end; if RxDBLookupCombo4.DisplayValue<>''then str:=str+' and 销售部门='+''''+RxDBLookupCombo4.DisplayValues[0]+''''; if RxDBLookupCombo1.DisplayValue<>''then str:=str+' and 揽货人='+''''+RxDBLookupCombo1.DisplayValues[0]+''''; if RxDBLookupCombo3.DisplayValue<>''then str:=str+' and 业务编号 in (select distinct bsno from v_vouitems where prepared='+''''+RxDBLookupCombo3.DisplayValues[0]+''''+')'; if Edit2.text<>'' then str:=str+' and 主提单号 like '+''''+'%'+Edit2.text+'%'+''''; if wwDBDateTimePicker1.text<>''then str:=str+' and 开船日期>='+''''+wwDBDateTimePicker1.text+''''; if wwDBDateTimePicker2.text<>''then str:=str+' and 开船日期<='+''''+wwDBDateTimePicker2.text+''''; if wwDBDateTimePicker3.text<>''then str:=str+' and 会计期间>='+''''+wwDBDateTimePicker3.text+''''; if wwDBDateTimePicker4.text<>''then str:=str+' and 会计期间<='+''''+wwDBDateTimePicker4.text+''''; t_op_seae.close; t_op_seae.sql.clear; t_op_seae.sql.add('select * from t_op_seae '+str+' order by 业务编号'); t_op_seae.open; end; procedure Tfrm_cw_pingzheng.bsSkinButton3Click(Sender: TObject); begin Edit4.text:=''; Edit2.text:=''; wwDBDateTimePicker1.text:=''; wwDBDateTimePicker2.text:=''; wwDBDateTimePicker3.text:=''; wwDBDateTimePicker4.text:=''; end; procedure Tfrm_cw_pingzheng.bsSkinButton5Click(Sender: TObject); begin close; end; procedure Tfrm_cw_pingzheng.bsSkinButton4Click(Sender: TObject); var str:widestring; begin str:='where 费用状态='+''''+'费用封帐'+''''; // str:='where 1=1 '; if not bsSkinCheckRadioBox2.Checked then str:=str+' and (财务 is null or 财务=0)'; if Edit1.text<>'' then begin if Edit13.text<>'' then str:=str+' and 业务编号>='+''''+Edit1.text+''''+' and 业务编号<='+''''+Edit13.text+'''' else str:=str+' and 业务编号 like '+''''+'%'+Edit1.text+'%'+''''; end; if Edit18.text<>'' then begin if Edit19.text<>'' then str:=str+' and 财务凭证>='+''''+Edit18.text+''''+' and 财务凭证<='+''''+Edit19.text+'''' else str:=str+' and 财务凭证 like '+''''+'%'+Edit18.text+'%'+''''; end; if RxDBLookupCombo8.DisplayValue<>''then str:=str+' and 销售部门='+''''+RxDBLookupCombo8.DisplayValues[0]+''''; if RxDBLookupCombo9.DisplayValue<>''then str:=str+' and 揽货人='+''''+RxDBLookupCombo9.DisplayValues[0]+''''; if RxDBLookupCombo10.DisplayValue<>''then str:=str+' and 业务编号 in (select distinct bsno from v_vouitems where prepared='+''''+RxDBLookupCombo10.DisplayValues[0]+''''+')'; if Edit3.text<>''then str:=str+' and 主提单号 like '+''''+'%'+Edit3.text+'%'+''''; if wwDBDateTimePicker5.text<>''then str:=str+' and 进口日期>='+''''+wwDBDateTimePicker5.text+''''; if wwDBDateTimePicker6.text<>''then str:=str+' and 进口日期<='+''''+wwDBDateTimePicker6.text+''''; if wwDBDateTimePicker7.text<>''then str:=str+' and 会计期间>='+''''+wwDBDateTimePicker7.text+''''; if wwDBDateTimePicker8.text<>''then str:=str+' and 会计期间<='+''''+wwDBDateTimePicker8.text+''''; t_op_seai.close; t_op_seai.sql.clear; t_op_seai.sql.add('select * from t_op_seai '+str+' order by 业务编号'); t_op_seai.open; end; procedure Tfrm_cw_pingzheng.bsSkinButton6Click(Sender: TObject); begin Edit1.text:=''; Edit3.text:=''; wwDBDateTimePicker5.text:=''; wwDBDateTimePicker6.text:=''; wwDBDateTimePicker7.text:=''; wwDBDateTimePicker8.text:=''; end; procedure Tfrm_cw_pingzheng.bsSkinButton7Click(Sender: TObject); var i,ordno:integer; aQuery:TAdoQuery; aModal:TModalResult; mAccOK:boolean; begin if wwDBDateTimePicker21.Text='' then begin MessageDlg('请首先设置记账日期!',mterror,[mbyes],0); exit; end; if RxDBLookupCombo6.DisplayValue='' then begin MessageDlg('请首先设置制单人!',mterror,[mbyes],0); exit; end; dmacc:=TdmAcc.Create(self); aQuery:=CreateAdoQuery; try dmAcc.ADOtblVou.Open; dmAcc.ADOtblVouItems.Open; aVKNO:=1; aQuery.Close; aQuery.SQL.Clear; aQuery.SQL.add('update t_op_seai set 财务=1,财务凭证=:财务凭证 where 业务编号=:业务编号'); VoucherDate:=wwDBDateTimePicker21.Date; try dmAcc.AdotblVou.Insert; dmAcc.AdotblVou.FieldByName('SourceType').AsInteger:=1; dmAcc.AdotblVou.FieldByName('ATTACHS').AsInteger:=1; dmAcc.AdotblVou.FieldByName('VKNO').Asstring:='记'; dmAcc.AdotblVou.FieldByName('PREPARED').AsString:=RxDBLookupCombo6.DisplayValues[0]; dmAcc.AdotblVou.Post; dmAcc.AdotblVou.Edit; if DBGridEh4.SelectedRows.Count>1 then begin if not ASSIGNED(frm_sys_progress) then frm_sys_progress:=tfrm_sys_progress.Create(self); try frm_sys_progress.bsSkinGauge1.ProgressText:='正在生成凭证请稍后。。。'; frm_sys_progress.Show; frm_sys_progress.bsSkinGauge1.MaxValue:=DBGridEh4.SelectedRows.Count; frm_sys_progress.bsSkinGauge1.MinValue:=0; frm_sys_progress.bsSkinGauge1.Value:=0; frm_sys_progress.Update; for i:=0 to DBGridEh4.SelectedRows.Count-1 do begin t_op_seai.GotoBookmark(Pointer(DBGridEh4.SelectedRows.Items[I])); if t_op_seai['财务'] then begin MessageDlg('业务编号:'+t_op_seai['业务编号']+'已经生成凭证,无法重新生成!',mterror,[mbyes],0); end else begin NewDrCrVou(t_op_seai,RxDBLookupCombo6.DisplayValues[0],wwDBDateTimePicker21.Date,t_op_seai.fieldbyname('船名').AsString+'-'+t_op_seai.fieldbyname('航次').AsString); aQuery.Parameters.ParamByName('财务凭证').Value:=dmacc.ADOTblVou.fieldbyname('ordno').AsString; aQuery.Parameters.ParamByName('业务编号').Value:=t_op_seai.fieldbyname('业务编号').AsString; aQuery.ExecSQL; end; frm_sys_progress.bsSkinGauge1.Value:=frm_sys_progress.bsSkinGauge1.Value+1; end; finally freeAndNil(frm_sys_progress); end; end else begin NewDrCrVou(t_op_seai,RxDBLookupCombo6.DisplayValues[0],wwDBDateTimePicker21.Date,t_op_seai.fieldbyname('船名').AsString+'-'+t_op_seai.fieldbyname('航次').AsString); aQuery.Parameters.ParamByName('财务凭证').Value:=dmacc.ADOTblVou.fieldbyname('ordno').AsString; aQuery.Parameters.ParamByName('业务编号').Value:=t_op_seai.fieldbyname('业务编号').AsString; aQuery.ExecSQL; end; ordno:=dmAcc.AdotblVou.fieldbyname('ordno').asinteger; dmAcc.AdotblVou.Post; FrmVouItemStl:=TFrmVouItemStl.Create(Application); try dmACC.AdotblVouItems.Last; FrmVouItemStl.DBGridVouItems.SelectedField:=dmACC.AdotblVouItems.FieldByName('AccID'); FrmVouItemStl.ShowModal; mAccOK:=false; aModal:=frmVouItemStl.ModalResult; mAccOK:=aModal=mrok; if mAccOK then begin if dmAcc.AdotblVouItems.State in [dsEdit,dsInsert] then dmAcc.AdotblVouItems.Post; if dmAcc.AdotblVou.State in [dsEdit,dsInsert] then dmAcc.AdotblVou.Post; end else begin dmAcc.TempQuery.Close; dmAcc.TempQuery.SQL.Clear; dmAcc.TempQuery.SQL.Add('delete from vouchers where ordno=:mOrdNo'); dmAcc.TempQuery.Parameters.ParamByName('mOrdNo').value:=OrdNo; dmAcc.TempQuery.ExecSQL; dmAcc.TempQuery.Close; dmAcc.TempQuery.SQL.Clear; dmAcc.TempQuery.SQL.Add('update t_op_seai set 财务=0,财务凭证='''' where 财务凭证='''+inttostr(OrdNo)+''''); // dmAcc.TempQuery.Parameters.ParamByName('mOrdNo').value:=OrdNo; dmAcc.TempQuery.ExecSQL; end; finally freeAndNil(FrmVouItemStl); end; except dmAcc.TempQuery.Close; dmAcc.TempQuery.SQL.Clear; dmAcc.TempQuery.SQL.Add('delete from vouchers where ordno=:mOrdNo'); dmAcc.TempQuery.Parameters.ParamByName('mOrdNo').value:=OrdNo; dmAcc.TempQuery.ExecSQL; end; finally dmAcc.AdotblVouItems.Close; dmAcc.AdotblVou.Close; freeAndNil(dmacc); end; bsSkinButton4.OnClick(sender); end; procedure Tfrm_cw_pingzheng.bsSkinButton8Click(Sender: TObject); var aQuery:TADOQuery; Str:String; begin if not bsSkinCheckRadioBox6.checked then str:=str+' and v.Status=0 '; if wwDBDateTimePicker19.text<>''then str:=str+' and v.voudate>='+''''+wwDBDateTimePicker19.text+''''; if wwDBDateTimePicker20.text<>''then str:=str+' and v.voudate<='+''''+wwDBDateTimePicker20.text+''''; if EditOrdNoFrm.text<>''then str:=str+' and v.ordno>='+''+EditOrdNoFrm.text+''; if EditOrdNoTo.text<>''then str:=str+' and v.ordno<='+''+EditOrdNoTo.text+''; if RxDBLookupCombo5.DisplayValue<>''then str:=str+' and v.prepared='+''''+RxDBLookupCombo5.DisplayValues[0]+''''; aQuery:=CreateAdoQuery; try with aQuery do begin Close;SQL.Clear; SQL.Add('Select 0 selected,V.* from Vouchers V where 1=1 '); SQL.Add(str); SQL.Add('Order by V.ORDNO'); Open; end; memTblVou.LoadFromDataSet(aQuery,[]); finally freeAndNil(aQuery); end; if memtblvou.IsEmpty then exit; qryVouitems.Close; qryVouitems.sql.Clear; qryVouitems.SQL.Add('select * from vouitems where ordno=:ordno order by ordno,itemno'); qryVouitems.Open; end; procedure Tfrm_cw_pingzheng.bsSkinButton9Click(Sender: TObject); var str:widestring; begin str:='where 费用状态='+''''+'费用封帐'+''''; // str:='where 1=1 '; if not bsSkinCheckRadioBox3.Checked then str:=Str+' and (财务 is null or 财务=0)'; if Edit5.text<>'' then begin if Edit14.text<>'' then str:=str+' and 业务编号>='+''''+Edit5.text+''''+' and 业务编号<='+''''+Edit14.text+'''' else str:=str+' and 业务编号 like '+''''+'%'+Edit5.text+'%'+''''; end; if Edit20.text<>'' then begin if Edit21.text<>'' then str:=str+' and 财务凭证>='+''''+Edit20.text+''''+' and 财务凭证<='+''''+Edit21.text+'''' else str:=str+' and 财务凭证 like '+''''+'%'+Edit20.text+'%'+''''; end; if RxDBLookupCombo11.DisplayValue<>''then str:=str+' and 销售部门='+''''+RxDBLookupCombo11.DisplayValues[0]+''''; if RxDBLookupCombo12.DisplayValue<>''then str:=str+' and 揽货人='+''''+RxDBLookupCombo12.DisplayValues[0]+''''; if RxDBLookupCombo13.DisplayValue<>''then str:=str+' and 业务编号 in (select distinct bsno from v_vouitems where prepared='+''''+RxDBLookupCombo13.DisplayValues[0]+''''+')'; if Edit6.text<>''then str:=str+' and 主运单号 like '+''''+'%'+Edit6.text+'%'+''''; if wwDBDateTimePicker9.text<>''then str:=str+' and 一程开航日期>='+''''+wwDBDateTimePicker9.text+''''; if wwDBDateTimePicker10.text<>''then str:=str+' and 一程开航日期<='+''''+wwDBDateTimePicker10.text+''''; if wwDBDateTimePicker11.text<>''then str:=str+' and 会计期间>='+''''+wwDBDateTimePicker11.text+''''; if wwDBDateTimePicker12.text<>''then str:=str+' and 会计期间<='+''''+wwDBDateTimePicker12.text+''''; t_op_aire.close; t_op_aire.sql.clear; t_op_aire.sql.add('select * from t_op_aire '+str+' order by 业务编号'); t_op_aire.open; end; procedure Tfrm_cw_pingzheng.bsSkinButton11Click(Sender: TObject); begin Edit5.text:=''; Edit6.text:=''; wwDBDateTimePicker9.text:=''; wwDBDateTimePicker10.text:=''; wwDBDateTimePicker11.text:=''; wwDBDateTimePicker12.text:=''; end; procedure Tfrm_cw_pingzheng.bsSkinButton14Click(Sender: TObject); var str:widestring; begin str:='where 费用状态='+''''+'费用封帐'+''''; // str:='where 1=1 '; if not bsSkinCheckRadioBox4.Checked then str:=Str+' and (财务 is null or 财务=0)'; if Edit7.text<>'' then begin if Edit15.text<>'' then str:=str+' and 业务编号>='+''''+Edit7.text+''''+' and 业务编号<='+''''+Edit15.text+'''' else str:=str+' and 业务编号 like '+''''+'%'+Edit7.text+'%'+''''; end; if Edit22.text<>'' then begin if Edit23.text<>'' then str:=str+' and 财务凭证>='+''''+Edit22.text+''''+' and 财务凭证<='+''''+Edit23.text+'''' else str:=str+' and 财务凭证 like '+''''+'%'+Edit22.text+'%'+''''; end; if RxDBLookupCombo14.DisplayValue<>''then str:=str+' and 销售部门='+''''+RxDBLookupCombo14.DisplayValues[0]+''''; if RxDBLookupCombo15.DisplayValue<>''then str:=str+' and 揽货人='+''''+RxDBLookupCombo15.DisplayValues[0]+''''; if RxDBLookupCombo16.DisplayValue<>''then str:=str+' and 业务编号 in (select distinct bsno from v_vouitems where prepared='+''''+RxDBLookupCombo16.DisplayValues[0]+''''+')'; if Edit8.text<>''then str:=str+' and 主运单号 like '+''''+'%'+Edit8.text+'%'+''''; if wwDBDateTimePicker13.text<>''then str:=str+' and 进口日期>='+''''+wwDBDateTimePicker13.text+''''; if wwDBDateTimePicker14.text<>''then str:=str+' and 进口日期<='+''''+wwDBDateTimePicker14.text+''''; if wwDBDateTimePicker15.text<>''then str:=str+' and 会计期间>='+''''+wwDBDateTimePicker15.text+''''; if wwDBDateTimePicker16.text<>''then str:=str+' and 会计期间<='+''''+wwDBDateTimePicker16.text+''''; t_op_airi.close; t_op_airi.sql.clear; t_op_airi.sql.add('select * from t_op_airi '+str+' order by 业务编号'); t_op_airi.open; end; procedure Tfrm_cw_pingzheng.bsSkinButton15Click(Sender: TObject); begin Edit7.text:=''; Edit8.text:=''; wwDBDateTimePicker13.text:=''; wwDBDateTimePicker14.text:=''; wwDBDateTimePicker15.text:=''; wwDBDateTimePicker16.text:=''; end; procedure Tfrm_cw_pingzheng.bsSkinButton1Click(Sender: TObject); var i,ordno:integer; aQuery:TAdoQuery; aModal:TModalResult; mAccOK:boolean; begin if wwDBDateTimePicker21.Text='' then begin MessageDlg('请首先设置记账日期!',mterror,[mbyes],0); exit; end; if RxDBLookupCombo6.DisplayValue='' then begin MessageDlg('请首先设置制单人!',mterror,[mbyes],0); exit; end; dmacc:=TdmAcc.Create(self); aQuery:=CreateAdoQuery; try dmAcc.ADOtblVou.Open; dmAcc.ADOtblVouItems.Open; aVKNO:=1; aQuery.Close; aQuery.SQL.Clear; aQuery.SQL.add('update t_op_seae set 财务=1,财务凭证=:财务凭证 where 业务编号=:业务编号'); VoucherDate:=wwDBDateTimePicker21.Date; try dmAcc.AdotblVou.Insert; dmAcc.AdotblVou.FieldByName('SourceType').AsInteger:=1; dmAcc.AdotblVou.FieldByName('ATTACHS').AsInteger:=1; dmAcc.AdotblVou.FieldByName('VKNO').Asstring:='记'; dmAcc.AdotblVou.FieldByName('PREPARED').AsString:=RxDBLookupCombo6.DisplayValues[0]; dmAcc.AdotblVou.Post; dmAcc.AdotblVou.Edit; if DBGridEh1.SelectedRows.Count>1 then begin if not ASSIGNED(frm_sys_progress) then frm_sys_progress:=tfrm_sys_progress.Create(self); try frm_sys_progress.bsSkinGauge1.ProgressText:='正在生成凭证请稍后。。。'; frm_sys_progress.Show; frm_sys_progress.bsSkinGauge1.MaxValue:=DBGridEh1.SelectedRows.Count; frm_sys_progress.bsSkinGauge1.MinValue:=0; frm_sys_progress.bsSkinGauge1.Value:=0; frm_sys_progress.Update; for i:=0 to DBGridEh1.SelectedRows.Count-1 do begin t_op_seae.GotoBookmark(Pointer(DBGridEh1.SelectedRows.Items[I])); if t_op_seae['财务'] then begin MessageDlg('业务编号:'+t_op_seae['业务编号']+'已经生成凭证,无法重新生成!',mterror,[mbyes],0); end else begin NewDrCrVou(t_op_seae,RxDBLookupCombo6.DisplayValues[0],wwDBDateTimePicker21.Date,t_op_seae.fieldbyname('船名').AsString+'-'+t_op_seae.fieldbyname('航次').AsString); aQuery.Parameters.ParamByName('财务凭证').Value:=dmacc.ADOTblVou.fieldbyname('ordno').AsString; aQuery.Parameters.ParamByName('业务编号').Value:=t_op_seae.fieldbyname('业务编号').AsString; aQuery.ExecSQL; end; frm_sys_progress.bsSkinGauge1.Value:=frm_sys_progress.bsSkinGauge1.Value+1; end; finally freeAndNil(frm_sys_progress); end; end else begin NewDrCrVou(t_op_seae,RxDBLookupCombo6.DisplayValues[0],wwDBDateTimePicker21.Date,t_op_seae.fieldbyname('船名').AsString+'-'+t_op_seae.fieldbyname('航次').AsString); aQuery.Parameters.ParamByName('财务凭证').Value:=dmacc.ADOTblVou.fieldbyname('ordno').AsString; aQuery.Parameters.ParamByName('业务编号').Value:=t_op_seae.fieldbyname('业务编号').AsString; aQuery.ExecSQL; end; ordno:=dmAcc.AdotblVou.fieldbyname('ordno').asinteger; FrmVouItemStl:=TFrmVouItemStl.Create(Application); try dmACC.AdotblVouItems.Last; FrmVouItemStl.DBGridVouItems.SelectedField:=dmACC.AdotblVouItems.FieldByName('AccID'); FrmVouItemStl.ShowModal; mAccOK:=false; aModal:=frmVouItemStl.ModalResult; mAccOK:=aModal=mrok; if mAccOK then begin if dmAcc.AdotblVouItems.State in [dsEdit,dsInsert] then dmAcc.AdotblVouItems.Post; if dmAcc.AdotblVou.State in [dsEdit,dsInsert] then dmAcc.AdotblVou.Post; end else begin dmAcc.TempQuery.Close; dmAcc.TempQuery.SQL.Clear; dmAcc.TempQuery.SQL.Add('delete from vouchers where ordno=:mOrdNo'); dmAcc.TempQuery.Parameters.ParamByName('mOrdNo').value:=OrdNo; dmAcc.TempQuery.ExecSQL; dmAcc.TempQuery.Close; dmAcc.TempQuery.SQL.Clear; dmAcc.TempQuery.SQL.Add('update t_op_seae set 财务=0,财务凭证='''' where 财务凭证='''+inttostr(OrdNo)+''''); // dmAcc.TempQuery.Parameters.ParamByName('mOrdNo').value:=OrdNo; dmAcc.TempQuery.ExecSQL; end; finally freeAndNil(FrmVouItemStl); end; except dmAcc.TempQuery.Close; dmAcc.TempQuery.SQL.Clear; dmAcc.TempQuery.SQL.Add('delete from vouchers where ordno=:mOrdNo'); dmAcc.TempQuery.Parameters.ParamByName('mOrdNo').value:=OrdNo; dmAcc.TempQuery.ExecSQL; end; finally dmAcc.AdotblVouItems.Close; dmAcc.AdotblVou.Close; freeAndNil(dmacc); end; bsSkinButton10.OnClick(sender); // showmessage('完成'); end; procedure Tfrm_cw_pingzheng.bsSkinButton18Click(Sender: TObject); var Str:String; begin str:='where 1=1 '; if not bsSkinCheckRadioBox5.Checked then str:=str+' and (财务 is null or 财务=0)'; if Edit4.text<>''then str:=str+' and 帐单编号 like '+''''+'%'+Edit4.text+'%'+''''; if Edit12.text<>''then str:=str+' and 结算金额='+Trim(Edit12.text); if RxDBLookupCombo2.DisplayValue<>''then str:=str+' and 客户名称 ='+''''+RxDBLookupCombo2.DisplayValues[1]+''''; if RxDBLookupCombo7.DisplayValue<>''then str:=str+' and 结算人 ='+''''+RxDBLookupCombo7.DisplayValues[0]+''''; if wwDBDateTimePicker17.text<>''then str:=str+' and 结算日期>='+''''+wwDBDateTimePicker17.text+''''; if wwDBDateTimePicker18.text<>''then str:=str+' and 结算日期<='+''''+wwDBDateTimePicker18.text+''''; if wwDBComboBox1.Text<>'' then begin if wwDBComboBox1.ItemIndex=0 then str:=str+' and 类型=''收''' else str:=str+' and 类型=''付'''; end; t_op_balance.close; t_op_balance.sql.clear; t_op_balance.sql.add('select * from t_ch_balance '+str+' order by 帐单编号'); t_op_balance.open; end; procedure Tfrm_cw_pingzheng.bsSkinButton20Click(Sender: TObject); var i,ordno:integer; aQuery:TAdoQuery; aModal:TModalResult; mAccOK:boolean; begin if wwDBDateTimePicker21.Text='' then begin MessageDlg('请首先设置记账日期!',mterror,[mbyes],0); exit; end; if RxDBLookupCombo6.DisplayValue='' then begin MessageDlg('请首先设置制单人!',mterror,[mbyes],0); exit; end; dmacc:=TdmAcc.Create(self); aQuery:=CreateAdoQuery; try dmAcc.ADOtblVou.Open; dmAcc.ADOtblVouItems.Open; aVKNO:=1; aQuery.Close; aQuery.SQL.Clear; aQuery.SQL.add('update t_ch_balance set 财务=1,财务凭证=:财务凭证 where 帐单编号=:帐单编号'); VoucherDate:=wwDBDateTimePicker21.Date; try dmAcc.AdotblVou.Insert; dmAcc.AdotblVou.FieldByName('SourceType').AsInteger:=2; dmAcc.AdotblVou.FieldByName('ATTACHS').AsInteger:=1; dmAcc.AdotblVou.FieldByName('VKNO').Asstring:='记'; dmAcc.AdotblVou.FieldByName('PREPARED').AsString:=RxDBLookupCombo6.DisplayValues[0]; dmAcc.AdotblVou.Post; dmAcc.AdotblVou.Edit; if DBGridEh7.SelectedRows.Count>1 then begin if not ASSIGNED(frm_sys_progress) then frm_sys_progress:=tfrm_sys_progress.Create(self); try frm_sys_progress.bsSkinGauge1.ProgressText:='正在生成凭证请稍后。。。'; frm_sys_progress.Show; frm_sys_progress.bsSkinGauge1.MaxValue:=DBGridEh7.SelectedRows.Count; frm_sys_progress.bsSkinGauge1.MinValue:=0; frm_sys_progress.bsSkinGauge1.Value:=0; frm_sys_progress.Update; for i:=0 to DBGridEh7.SelectedRows.Count-1 do begin t_op_balance.GotoBookmark(Pointer(DBGridEh7.SelectedRows.Items[I])); if t_op_balance['财务'] then begin MessageDlg('帐单编号:'+t_op_balance['帐单编号']+'已经生成凭证,无法重新生成!',mterror,[mbyes],0); end else begin NewDCVou(t_op_balance,RxDBLookupCombo6.DisplayValues[0],wwDBDateTimePicker21.Date); aQuery.Parameters.ParamByName('财务凭证').Value:=dmacc.ADOTblVou.fieldbyname('ordno').AsString; aQuery.Parameters.ParamByName('帐单编号').Value:=t_op_balance.fieldbyname('帐单编号').AsString; aQuery.ExecSQL; end; frm_sys_progress.bsSkinGauge1.Value:=frm_sys_progress.bsSkinGauge1.Value+1; end; finally freeAndNil(frm_sys_progress); end; end else begin NewDCVou(t_op_balance,RxDBLookupCombo6.DisplayValues[0],wwDBDateTimePicker21.Date); aQuery.Parameters.ParamByName('财务凭证').Value:=dmacc.ADOTblVou.fieldbyname('ordno').AsString; aQuery.Parameters.ParamByName('帐单编号').Value:=t_op_balance.fieldbyname('帐单编号').AsString; aQuery.ExecSQL; end; ordno:=dmAcc.AdotblVou.fieldbyname('ordno').asinteger; dmAcc.AdotblVou.Post; FrmVouItemStl:=TFrmVouItemStl.Create(Application); try dmACC.AdotblVouItems.Last; FrmVouItemStl.DBGridVouItems.SelectedField:=dmACC.AdotblVouItems.FieldByName('AccID'); FrmVouItemStl.ShowModal; mAccOK:=false; aModal:=frmVouItemStl.ModalResult; mAccOK:=aModal=mrok; if mAccOK then begin if dmAcc.AdotblVouItems.State in [dsEdit,dsInsert] then dmAcc.AdotblVouItems.Post; if dmAcc.AdotblVou.State in [dsEdit,dsInsert] then dmAcc.AdotblVou.Post; end else begin dmAcc.TempQuery.Close; dmAcc.TempQuery.SQL.Clear; dmAcc.TempQuery.SQL.Add('delete from vouchers where ordno=:mOrdNo'); dmAcc.TempQuery.Parameters.ParamByName('mOrdNo').value:=OrdNo; dmAcc.TempQuery.ExecSQL; dmAcc.TempQuery.Close; dmAcc.TempQuery.SQL.Clear; dmAcc.TempQuery.SQL.Add('update t_ch_balance set 财务=0,财务凭证='''' where 财务凭证='''+inttostr(OrdNo)+''''); // dmAcc.TempQuery.Parameters.ParamByName('mOrdNo').value:=OrdNo; dmAcc.TempQuery.ExecSQL; end; finally freeAndNil(FrmVouItemStl); end; except dmAcc.TempQuery.Close; dmAcc.TempQuery.SQL.Clear; dmAcc.TempQuery.SQL.Add('delete from vouchers where ordno=:mOrdNo'); dmAcc.TempQuery.Parameters.ParamByName('mOrdNo').value:=OrdNo; dmAcc.TempQuery.ExecSQL; end; finally dmAcc.AdotblVouItems.Close; dmAcc.AdotblVou.Close; freeAndNil(dmacc); end; bsSkinButton18.OnClick(sender); end; procedure Tfrm_cw_pingzheng.bsSkinButton2Click(Sender: TObject); var aQuery:TADOQuery; Str,S,source,dbffile,exepath,adbftable:String; connectstr:wideString; selcount,itemno:integer; sl:TStrings; function GetSelCount:integer; begin result:=0; memtblvou.First; while not memtblvou.Eof do begin result:=result+1; memtblvou.Next; end; end; begin { if not selectDirectory('选择导出文件目录','',source) then begin messagedlg( '必须选择导出路径才能导出凭证文件',mterro,mbyes,0); exit; end; } if not memtblVou.Active then exit; selcount:=GetSelCount; if selcount=0 then begin messagedlg( '没有选择要导出的凭证,不能导出',mtError,[mbyes],0); exit; end; aQuery:=CreateADOQuery; aQuery.SQL.Add('Update Vouchers set Status=1 where ordno=:OrdNo'); sl:=TStringList.Create; sl.Add('填制凭证,V800'); memtblVou.First; try while not memtblVou.Eof do begin if memtblVou.FieldByName('Selected').AsInteger=1 then begin qryVouitems.First; while not qryVouitems.Eof do begin S:=''; S:=S+FormatDateTime('YY-MM-DD',memTblVou.FieldByName('VouDate').AsDateTime)+','; S:=S+memTblVou.fieldByName('VKNO').AsString+','; S:=S+memTblVou.fieldByName('ORDNO').AsString+','; S:=S+memTblVou.fieldByName('ATTACHS').AsString+','; S:=S+qryVouitems.fieldByName('Explan').AsString+','; S:=S+Trim(qryVouitems.fieldByName('ACCID').AsString)+','; S:=S+qryVouitems.fieldByName('AMTDR').AsString+','; S:=S+qryVouitems.fieldByName('AMTCR').AsString+',,'; S:=S+FloattoStr(qryVouitems.fieldByName('FCYDR').AsFloat+qryVouitems.fieldByName('FCYCR').AsFloat)+','; S:=S+qryVouitems.fieldByName('FCYExRate').AsString+',,'; S:=S+qryVouitems.FieldByName('FSETTLCODE').AsString+','; S:=S+qryVouitems.FieldByName('FSETTLENO').AsString+',,'; S:=S+qryVouitems.fieldByName('DeptID').AsString+','; S:=S+qryVouitems.fieldByName('EmplID').AsString+','; // if qryVouitems.FieldByName('CorpBF').AsString='T' then // S:=S+','+qryVouitems.fieldByName('CORPID').AsString+',' // else S:=S+qryVouitems.fieldByName('CORPID').AsString+',,'; SL.Add(S); qryVouitems.Next; end; aQuery.Parameters.ParamByName('OrdNO').value:=qryVouitems.fieldByName('OrdNO').AsInteger; aQuery.ExecSQL; end; memTblVou.Next; end; if sl.Count<>1 then begin saveDialog1.Files.Add(FormatDateTime('YYMMDD', Date)+'.TXT'); if SaveDialog1.Execute then begin sl.SaveToFile(SaveDialog1.FileName+'.txt'); MessageDlg('已经将凭证输出到文件'+SaveDialog1.FileName,mtInformation,[mbOK],0); end; end; finally FreeAndNil(aQuery); FreeAndNil(Sl); end; bsSkinButton8Click(sender); end; procedure Tfrm_cw_pingzheng.DBGridEh2DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumnEh; State: TGridDrawState); begin with TDBGridEh(Sender), Canvas, Brush do begin case memTblVou.FieldByName('Status').AsInteger of 1 : Color:=$00FBE8FF;//完成 end; if (gdSelected in State)or(gdFocused in State) then begin Font.Color:=Color; Color:=$00C08080; end; DefaultDrawColumnCell(Rect, dataCol,Column, State); end; end; procedure Tfrm_cw_pingzheng.DBGridEh1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumnEh; State: TGridDrawState); begin with TDBGridEh(Sender), Canvas, Brush do begin if t_op_seae['财务'] then Color:=$00FBE8FF;//完成 if (gdSelected in State)or(gdFocused in State) then begin Font.Color:=Color; Color:=$00C08080; end; DefaultDrawColumnCell(Rect, dataCol,Column, State); end; end; procedure Tfrm_cw_pingzheng.DBGridEh4DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumnEh; State: TGridDrawState); begin with TDBGridEh(Sender), Canvas, Brush do begin if t_op_seai['财务'] then Color:=$00FBE8FF;//完成 if (gdSelected in State)or(gdFocused in State) then begin Font.Color:=Color; Color:=$00C08080; end; DefaultDrawColumnCell(Rect, dataCol,Column, State); end; end; procedure Tfrm_cw_pingzheng.DBGridEh5DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumnEh; State: TGridDrawState); begin with TDBGridEh(Sender), Canvas, Brush do begin if t_op_aire['财务'] then Color:=$00FBE8FF;//完成 if (gdSelected in State)or(gdFocused in State) then begin Font.Color:=Color; Color:=$00C08080; end; DefaultDrawColumnCell(Rect, dataCol,Column, State); end; end; procedure Tfrm_cw_pingzheng.DBGridEh6DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumnEh; State: TGridDrawState); begin with TDBGridEh(Sender), Canvas, Brush do begin if t_op_airi['财务'] then Color:=$00FBE8FF;//完成 if (gdSelected in State)or(gdFocused in State) then begin Font.Color:=Color; Color:=$00C08080; end; DefaultDrawColumnCell(Rect, dataCol,Column, State); end; end; procedure Tfrm_cw_pingzheng.DBGridEh7DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumnEh; State: TGridDrawState); begin with TDBGridEh(Sender), Canvas, Brush do begin if t_op_balance['财务'] then Color:=$00FBE8FF;//完成 if (gdSelected in State)or(gdFocused in State) then begin Font.Color:=Color; Color:=$00C08080; end; DefaultDrawColumnCell(Rect, dataCol,Column, State); end; end; procedure Tfrm_cw_pingzheng.bsSkinButton12Click(Sender: TObject); var i,ordno:integer; aQuery:TAdoQuery; aModal:TModalResult; mAccOK:boolean; begin if wwDBDateTimePicker21.Text='' then begin MessageDlg('请首先设置记账日期!',mterror,[mbyes],0); exit; end; if RxDBLookupCombo6.DisplayValue='' then begin MessageDlg('请首先设置制单人!',mterror,[mbyes],0); exit; end; dmacc:=TdmAcc.Create(self); aQuery:=CreateAdoQuery; try dmAcc.ADOtblVou.Open; dmAcc.ADOtblVouItems.Open; aVKNO:=1; aQuery.Close; aQuery.SQL.Clear; aQuery.SQL.add('update t_op_aire set 财务=1,财务凭证=:财务凭证 where 业务编号=:业务编号'); VoucherDate:=wwDBDateTimePicker21.Date; try dmAcc.AdotblVou.Insert; dmAcc.AdotblVou.FieldByName('SourceType').AsInteger:=1; dmAcc.AdotblVou.FieldByName('ATTACHS').AsInteger:=1; dmAcc.AdotblVou.FieldByName('VKNO').Asstring:='记'; dmAcc.AdotblVou.FieldByName('PREPARED').AsString:=RxDBLookupCombo6.DisplayValues[0]; dmAcc.AdotblVou.Post; dmAcc.AdotblVou.Edit; if DBGridEh5.SelectedRows.Count>1 then begin if not ASSIGNED(frm_sys_progress) then frm_sys_progress:=tfrm_sys_progress.Create(self); try frm_sys_progress.bsSkinGauge1.ProgressText:='正在生成凭证请稍后。。。'; frm_sys_progress.Show; frm_sys_progress.bsSkinGauge1.MaxValue:=DBGridEh5.SelectedRows.Count; frm_sys_progress.bsSkinGauge1.MinValue:=0; frm_sys_progress.bsSkinGauge1.Value:=0; frm_sys_progress.Update; for i:=0 to DBGridEh5.SelectedRows.Count-1 do begin t_op_aire.GotoBookmark(Pointer(DBGridEh5.SelectedRows.Items[I])); if t_op_aire['财务'] then begin MessageDlg('业务编号:'+t_op_aire['业务编号']+'已经生成凭证,无法重新生成!',mterror,[mbyes],0); end else begin NewDrCrVou(t_op_aire,RxDBLookupCombo6.DisplayValues[0],wwDBDateTimePicker21.Date,t_op_aire.fieldbyname('一程航班').AsString); aQuery.Parameters.ParamByName('财务凭证').Value:=dmacc.ADOTblVou.fieldbyname('ordno').AsString; aQuery.Parameters.ParamByName('业务编号').Value:=t_op_aire.fieldbyname('业务编号').AsString; aQuery.ExecSQL; end; frm_sys_progress.bsSkinGauge1.Value:=frm_sys_progress.bsSkinGauge1.Value+1; end; finally freeAndNil(frm_sys_progress); end; end else begin NewDrCrVou(t_op_aire,RxDBLookupCombo6.DisplayValues[0],wwDBDateTimePicker21.Date,t_op_aire.fieldbyname('一程航班').AsString); aQuery.Parameters.ParamByName('财务凭证').Value:=dmacc.ADOTblVou.fieldbyname('ordno').AsString; aQuery.Parameters.ParamByName('业务编号').Value:=t_op_aire.fieldbyname('业务编号').AsString; aQuery.ExecSQL; end; ordno:=dmAcc.AdotblVou.fieldbyname('ordno').asinteger; dmAcc.AdotblVou.Post; FrmVouItemStl:=TFrmVouItemStl.Create(Application); try dmACC.AdotblVouItems.Last; FrmVouItemStl.DBGridVouItems.SelectedField:=dmACC.AdotblVouItems.FieldByName('AccID'); FrmVouItemStl.ShowModal; mAccOK:=false; aModal:=frmVouItemStl.ModalResult; mAccOK:=aModal=mrok; if mAccOK then begin if dmAcc.AdotblVouItems.State in [dsEdit,dsInsert] then dmAcc.AdotblVouItems.Post; if dmAcc.AdotblVou.State in [dsEdit,dsInsert] then dmAcc.AdotblVou.Post; end else begin dmAcc.TempQuery.Close; dmAcc.TempQuery.SQL.Clear; dmAcc.TempQuery.SQL.Add('delete from vouchers where ordno=:mOrdNo'); dmAcc.TempQuery.Parameters.ParamByName('mOrdNo').value:=OrdNo; dmAcc.TempQuery.ExecSQL; dmAcc.TempQuery.Close; dmAcc.TempQuery.SQL.Clear; dmAcc.TempQuery.SQL.Add('update t_op_aire set 财务=0,财务凭证='''' where 财务凭证='''+inttostr(OrdNo)+''''); // dmAcc.TempQuery.Parameters.ParamByName('mOrdNo').value:=OrdNo; dmAcc.TempQuery.ExecSQL; end; finally freeAndNil(FrmVouItemStl); end; except dmAcc.TempQuery.Close; dmAcc.TempQuery.SQL.Clear; dmAcc.TempQuery.SQL.Add('delete from vouchers where ordno=:mOrdNo'); dmAcc.TempQuery.Parameters.ParamByName('mOrdNo').value:=OrdNo; dmAcc.TempQuery.ExecSQL; end; finally dmAcc.AdotblVouItems.Close; dmAcc.AdotblVou.Close; freeAndNil(dmacc); end; bsSkinButton9.OnClick(sender); end; procedure Tfrm_cw_pingzheng.bsSkinButton16Click(Sender: TObject); var i,ordno:integer; aQuery:TAdoQuery; aModal:TModalResult; mAccOK:boolean; begin if wwDBDateTimePicker21.Text='' then begin MessageDlg('请首先设置记账日期!',mterror,[mbyes],0); exit; end; if RxDBLookupCombo6.DisplayValue='' then begin MessageDlg('请首先设置制单人!',mterror,[mbyes],0); exit; end; dmacc:=TdmAcc.Create(self); aQuery:=CreateAdoQuery; try dmAcc.ADOtblVou.Open; dmAcc.ADOtblVouItems.Open; aVKNO:=1; aQuery.Close; aQuery.SQL.Clear; aQuery.SQL.add('update t_op_airi set 财务=1,财务凭证=:财务凭证 where 业务编号=:业务编号'); VoucherDate:=wwDBDateTimePicker21.Date; try dmAcc.AdotblVou.Insert; dmAcc.AdotblVou.FieldByName('SourceType').AsInteger:=1; dmAcc.AdotblVou.FieldByName('ATTACHS').AsInteger:=1; dmAcc.AdotblVou.FieldByName('VKNO').Asstring:='记'; dmAcc.AdotblVou.FieldByName('PREPARED').AsString:=RxDBLookupCombo6.DisplayValues[0]; dmAcc.AdotblVou.Post; dmAcc.AdotblVou.Edit; if DBGridEh6.SelectedRows.Count>1 then begin if not ASSIGNED(frm_sys_progress) then frm_sys_progress:=tfrm_sys_progress.Create(self); try frm_sys_progress.bsSkinGauge1.ProgressText:='正在生成凭证请稍后。。。'; frm_sys_progress.Show; frm_sys_progress.bsSkinGauge1.MaxValue:=DBGridEh6.SelectedRows.Count; frm_sys_progress.bsSkinGauge1.MinValue:=0; frm_sys_progress.bsSkinGauge1.Value:=0; frm_sys_progress.Update; for i:=0 to DBGridEh6.SelectedRows.Count-1 do begin t_op_airi.GotoBookmark(Pointer(DBGridEh6.SelectedRows.Items[I])); if t_op_airi['财务'] then begin MessageDlg('业务编号:'+t_op_airi['业务编号']+'已经生成凭证,无法重新生成!',mterror,[mbyes],0); end else begin NewDrCrVou(t_op_airi,RxDBLookupCombo6.DisplayValues[0],wwDBDateTimePicker21.Date,t_op_airi.fieldbyname('航班号').AsString); aQuery.Parameters.ParamByName('财务凭证').Value:=dmacc.ADOTblVou.fieldbyname('ordno').AsString; aQuery.Parameters.ParamByName('业务编号').Value:=t_op_airi.fieldbyname('业务编号').AsString; aQuery.ExecSQL; end; frm_sys_progress.bsSkinGauge1.Value:=frm_sys_progress.bsSkinGauge1.Value+1; end; finally freeAndNil(frm_sys_progress); end; end else begin NewDrCrVou(t_op_airi,RxDBLookupCombo6.DisplayValues[0],wwDBDateTimePicker21.Date,t_op_airi.fieldbyname('航班号').AsString); aQuery.Parameters.ParamByName('财务凭证').Value:=dmacc.ADOTblVou.fieldbyname('ordno').AsString; aQuery.Parameters.ParamByName('业务编号').Value:=t_op_airi.fieldbyname('业务编号').AsString; aQuery.ExecSQL; end; ordno:=dmAcc.AdotblVou.fieldbyname('ordno').asinteger; dmAcc.AdotblVou.Post; FrmVouItemStl:=TFrmVouItemStl.Create(Application); try dmACC.AdotblVouItems.Last; FrmVouItemStl.DBGridVouItems.SelectedField:=dmACC.AdotblVouItems.FieldByName('AccID'); FrmVouItemStl.ShowModal; mAccOK:=false; aModal:=frmVouItemStl.ModalResult; mAccOK:=aModal=mrok; if mAccOK then begin if dmAcc.AdotblVouItems.State in [dsEdit,dsInsert] then dmAcc.AdotblVouItems.Post; if dmAcc.AdotblVou.State in [dsEdit,dsInsert] then dmAcc.AdotblVou.Post; end else begin dmAcc.TempQuery.Close; dmAcc.TempQuery.SQL.Clear; dmAcc.TempQuery.SQL.Add('delete from vouchers where ordno=:mOrdNo'); dmAcc.TempQuery.Parameters.ParamByName('mOrdNo').value:=OrdNo; dmAcc.TempQuery.ExecSQL; dmAcc.TempQuery.Close; dmAcc.TempQuery.SQL.Clear; dmAcc.TempQuery.SQL.Add('update t_op_airi set 财务=0,财务凭证='''' where 财务凭证='''+inttostr(OrdNo)+''''); // dmAcc.TempQuery.Parameters.ParamByName('mOrdNo').value:=OrdNo; dmAcc.TempQuery.ExecSQL; end; finally freeAndNil(FrmVouItemStl); end; except dmAcc.TempQuery.Close; dmAcc.TempQuery.SQL.Clear; dmAcc.TempQuery.SQL.Add('delete from vouchers where ordno=:mOrdNo'); dmAcc.TempQuery.Parameters.ParamByName('mOrdNo').value:=OrdNo; dmAcc.TempQuery.ExecSQL; end; finally dmAcc.AdotblVouItems.Close; dmAcc.AdotblVou.Close; freeAndNil(dmacc); end; bsSkinButton14.OnClick(sender); end; procedure Tfrm_cw_pingzheng.bsSkinButton17Click(Sender: TObject); procedure deleteBusiCardVt(ordno:integer); var aQuery:TAdoQuery; begin aQuery:=CreateAdoQuery; try with aQuery do begin close;SQl.Clear; SQL.Add('delete from vouchers where ORDNO='+inttostr(OrdNo)); ExecSQL; close;SQl.Clear; SQL.Add('update t_op_seae set 财务=0,财务凭证='''' where 财务凭证='''+inttostr(OrdNo)+''''); ExecSQL; close;SQl.Clear; SQL.Add('update t_op_seai set 财务=0,财务凭证='''' where 财务凭证='''+inttostr(OrdNo)+''''); ExecSQL; close;SQl.Clear; SQL.Add('update t_op_aire set 财务=0,财务凭证='''' where 财务凭证='''+inttostr(OrdNo)+''''); ExecSQL; close;SQl.Clear; SQL.Add('update t_op_airi set 财务=0,财务凭证='''' where 财务凭证='''+inttostr(OrdNo)+''''); ExecSQL; end; finally FreeAndNil(aQuery); end; end; procedure deleteStlVt(ordno:integer); var aQuery:TAdoQuery; begin aQuery:=CreateAdoQuery; try with aQuery do begin close;SQl.Clear; SQL.Add('update t_ch_balance set 财务=0,财务凭证='''' where 财务凭证='''+inttostr(OrdNo)+''''); ExecSQL; close;SQl.Clear; SQL.Add('delete from vouchers where ORDNO='+inttostr(OrdNo)); ExecSQL; end; finally FreeAndNil(aQuery); end; end; begin memtblVou.First; while not memtblVou.Eof do begin if memtblVou.FieldByName('Selected').AsInteger=1 then begin if memTblVou.FieldByName('SOURCETYPE').AsInteger=2 then deleteStlVt(memTblVou.fieldByName('ordno').AsInteger) else deleteBusiCardVt(memTblVou.fieldByName('ordno').AsInteger); end; memtblvou.Next; end; bsSkinButton8Click(sender); end; procedure Tfrm_cw_pingzheng.bsSkinButton21Click(Sender: TObject); var str:widestring; i:integer; begin if t_op_seae.IsEmpty then exit; if DBGridEh1.SelectedRows.Count<1 then begin showmessage('请选择要打印的业务!!'); exit; end; if (t_op_seae.State=dsinsert)or(t_op_seae.State=dsedit) then t_op_seae.post; try frm_ch_piliang_seae:=tfrm_ch_piliang_seae.Create (self); t_op_seae.DisableControls; for i:=0 to DBGridEh1.SelectedRows.Count-1 do begin t_op_seae.GotoBookmark(pointer(DBGridEh1.SelectedRows.Items[I])); if str='' then str:=''''+t_op_seae.fieldbyname('编号').AsString+'''' else str:=str+','+''''+t_op_seae.fieldbyname('编号').AsString+''''; end; str:='('+str+')'; str:='select * from t_op_seae where 编号 in '+str+default_sort(53,'t_op_seae','','desc'); frm_ch_piliang_seae.t_op_seae.Parameters.ParamByName('SQLStr').value:=str; frm_ch_piliang_seae.t_op_seae.open; frm_ch_piliang_seae.ShowModal; finally t_op_seae.EnableControls; frm_ch_piliang_seae.Free; frm_ch_piliang_seae:=nil; end; end; procedure Tfrm_cw_pingzheng.bsSkinButton22Click(Sender: TObject); var str:widestring; i:integer; begin if t_op_seai.IsEmpty then exit; if DBGridEh4.SelectedRows.Count<1 then begin showmessage('请选择要打印的业务帐单!!'); exit; end; if (t_op_seai.State=dsinsert)or(t_op_seai.State=dsedit) then t_op_seai.post; try frm_ch_piliang_seai:=tfrm_ch_piliang_seai.Create (self); t_op_seai.DisableControls; for i:=0 to DBGridEh4.SelectedRows.Count-1 do begin t_op_seai.GotoBookmark(pointer(DBGridEh4.SelectedRows.items[i])); if str='' then str:=''''+t_op_seai.fieldbyname('编号').AsString+'''' else str:=str+','+''''+t_op_seai.fieldbyname('编号').AsString+''''; end; str:='('+str+')'; str:='select * from t_op_seai where 编号 in '+str+default_sort(54,'t_op_seai','','desc'); frm_ch_piliang_seai.t_op_seai.Parameters.ParamByName('SQLStr').value:=str; frm_ch_piliang_seai.t_op_seai.open; frm_ch_piliang_seai.ShowModal; finally t_op_seai.EnableControls; frm_ch_piliang_seai.Free; frm_ch_piliang_seai:=nil; end; end; procedure Tfrm_cw_pingzheng.bsSkinButton23Click(Sender: TObject); var str:widestring; i:integer; begin if t_op_aire.IsEmpty then exit; if DBGridEh5.SelectedRows.Count<1 then begin showmessage('请选择要打印的业务帐单!!'); exit; end; if (t_op_aire.State=dsinsert)or(t_op_aire.State=dsedit) then t_op_aire.post; try frm_ch_piliang_aire:=tfrm_ch_piliang_aire.Create (self); t_op_aire.DisableControls; for i:=0 to DBGridEh5.SelectedRows.Count-1 do begin t_op_aire.GotoBookmark(pointer(DBGridEh5.SelectedRows.items[i])); if str='' then str:=''''+t_op_aire.fieldbyname('编号').AsString+'''' else str:=str+','+''''+t_op_aire.fieldbyname('编号').AsString+''''; end; str:='('+str+')'; str:='select * from t_op_aire where 编号 in '+str+default_sort(55,'t_op_aire','','desc'); frm_ch_piliang_aire.t_op_aire.Parameters.ParamByName('SQLStr').value:=str; frm_ch_piliang_aire.t_op_aire.open; frm_ch_piliang_aire.ShowModal; finally t_op_aire.EnableControls; frm_ch_piliang_aire.Free; frm_ch_piliang_aire:=nil; end; end; procedure Tfrm_cw_pingzheng.bsSkinButton24Click(Sender: TObject); var str:widestring; i:integer; begin if t_op_airi.IsEmpty then exit; if DBGridEh6.SelectedRows.Count<1 then begin showmessage('请选择要打印的业务帐单!!'); exit; end; if (t_op_airi.State=dsinsert)or(t_op_airi.State=dsedit) then t_op_airi.post; try frm_ch_piliang_airi:=tfrm_ch_piliang_airi.Create (self); t_op_airi.DisableControls; for i:=0 to DBGridEh6.SelectedRows.Count-1 do begin t_op_airi.GotoBookmark(pointer(DBGridEh6.SelectedRows.items[i])); if str='' then str:=''''+t_op_airi.fieldbyname('编号').AsString+'''' else str:=str+','+''''+t_op_airi.fieldbyname('编号').AsString+''''; end; str:='('+str+')'; str:='select * from t_op_airi where 编号 in '+str+default_sort(56,'t_op_airi','','desc'); frm_ch_piliang_airi.t_op_airi.Parameters.ParamByName('SQLStr').value:=str; frm_ch_piliang_airi.t_op_airi.open; frm_ch_piliang_airi.ShowModal; finally t_op_airi.EnableControls; frm_ch_piliang_airi.Free; frm_ch_piliang_airi:=nil; end; end; procedure Tfrm_cw_pingzheng.bsSkinButton13Click(Sender: TObject); begin memTblVou.First; while not memtblvou.Eof do begin memtblVou.Edit; memtblVou.FieldByName('Selected').AsInteger:=1; memtblVou.Post; memtblvou.Next; end; end; procedure Tfrm_cw_pingzheng.bsSkinButton25Click(Sender: TObject); begin memTblVou.First; while not memtblvou.Eof do begin memtblVou.Edit; memtblVou.FieldByName('Selected').AsInteger:=0; memtblVou.Post; memtblvou.Next; end; end; procedure Tfrm_cw_pingzheng.Edit12KeyPress(Sender: TObject; var Key: Char); begin if not (key in ['0'..'9','.','-']) then key:=#0; end; procedure Tfrm_cw_pingzheng.Edit10KeyPress(Sender: TObject; var Key: Char); begin if not (key in ['0'..'9','.','-']) then key:=#0; end; procedure Tfrm_cw_pingzheng.bsSkinButton27Click(Sender: TObject); var Str:String; function GetCustID(CorpID,DC:String):String; var i:integer; aQuery:TADOQuery; begin aQuery:=createADOQuery; with aQuery do try Close;SQL.Clear; SQL.Add('select 财务应收帐款代码,财务应付帐款代码 from t_crm_client where 客户简称='''+CorpID+''''); Open; if DC='收' then Result:=fieldByName('财务应收帐款代码').AsString else Result:=fieldByName('财务应付帐款代码').AsString finally FreeAndNil(aQuery); end; end; begin if not bsSkinCheckRadioBox7.checked then str:=str+' and v.Status=0 '; if wwDBDateTimePicker22.text<>''then str:=str+' and v.voudate>='+''''+wwDBDateTimePicker22.text+''''; if wwDBDateTimePicker23.text<>''then str:=str+' and v.voudate<='+''''+wwDBDateTimePicker23.text+''''; if Edit26.text<>''then str:=str+' and v.ordno>='+''+Edit26.text+''; if Edit25.text<>''then str:=str+' and v.ordno<='+''+Edit25.text+''; if RxDBLookupCombo17.DisplayValue<>''then str:=str+' and v.prepared='+''''+RxDBLookupCombo17.DisplayValues[0]+''''; if Edit27.text<>'' then str:=str+' and v.ACCID='+''''+Edit27.text+''''; if RxDBLookupCombo18.DisplayValues[1]<>'' then begin str:=str+' and (v.CorpID='+''''+GetCustID(RxDBLookupCombo18.DisplayValues[1],'收')+''''+' or v.CorpID='+''''+GetCustID(RxDBLookupCombo18.DisplayValues[1],'付')+''''+')'; end; with v_vouitems do begin Close;SQL.Clear; SQL.Add('Select v.* from v_vouitems V where 1=1 '); SQL.Add(str); SQL.Add('Order by V.ORDNO'); Open; end; end; end.