{$INCLUDE t_main.inc} unit u_ch_invoice; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ComCtrls, bsSkinTabs, bsSkinCtrls, DB, ADODB, dxExEdtr,CommCtrl, dxCntner, dxTL, dxDBCtrl, dxDBGrid, dxDBTLCl, dxGrClms, wwdblook, StdCtrls, DBCtrls, RxLookup, bsdbctrls, Mask, wwdbdatetimepicker,ComObj, ExtCtrls, Menus, XPMenu, u_ch_add_do, u_ch_delete_do, wwdbedit, Wwdotdot, Wwdbcomb, DBCtrlsEh, kbmMemTable; type Tfrm_ch_invoice = class(TForm) bsSkinPageControl1: TbsSkinPageControl; bsSkinTabSheet1: TbsSkinTabSheet; bsSkinTabSheet2: TbsSkinTabSheet; bsSkinTabSheet3: TbsSkinTabSheet; bsSkinPanel2: TbsSkinPanel; bsSkinButton5: TbsSkinButton; bsSkinButton9: TbsSkinButton; bsSkinButton10: TbsSkinButton; bsSkinButton3: TbsSkinButton; bsSkinButton1: TbsSkinButton; t_ch_invoice_shen: TADOQuery; t_ch_invoice_shen1: TDataSource; v_fee_do_seae: TADOQuery; v_fee_do_seae1: TDataSource; t_ch_invoice: TADOQuery; t_ch_invoice1: TDataSource; bsSkinButton2: TbsSkinButton; bsSkinButton6: TbsSkinButton; bsSkinButton7: TbsSkinButton; bsSkinButton8: TbsSkinButton; bsSkinPanel1: TbsSkinPanel; bsSkinButton4: TbsSkinButton; bsSkinButton11: TbsSkinButton; bsSkinButton12: TbsSkinButton; bsSkinButton13: TbsSkinButton; bsSkinButton14: TbsSkinButton; bsSkinButton16: TbsSkinButton; bsSkinButton17: TbsSkinButton; bsSkinButton18: TbsSkinButton; bsSkinButton19: TbsSkinButton; bsSkinPanel3: TbsSkinPanel; bsSkinButton21: TbsSkinButton; bsSkinButton23: TbsSkinButton; bsSkinButton24: TbsSkinButton; bsSkinButton25: TbsSkinButton; bsSkinButton26: TbsSkinButton; bsSkinButton30: TbsSkinButton; bsSkinPageControl2: TbsSkinPageControl; bsSkinTabSheet11: TbsSkinTabSheet; bsSkinTabSheet22: TbsSkinTabSheet; dxDBGrid2: TdxDBGrid; dxDBGridMaskColumn1: TdxDBGridMaskColumn; dxDBGridMaskColumn2: TdxDBGridMaskColumn; dxDBGridMaskColumn3: TdxDBGridMaskColumn; dxDBGridMaskColumn4: TdxDBGridMaskColumn; dxDBGridMaskColumn5: TdxDBGridMaskColumn; dxDBGridMaskColumn6: TdxDBGridMaskColumn; dxDBGridMaskColumn7: TdxDBGridMaskColumn; dxDBGridDateColumn1: TdxDBGridDateColumn; dxDBGridMaskColumn8: TdxDBGridMaskColumn; dxDBGridMaskColumn9: TdxDBGridMaskColumn; dxDBGridMaskColumn10: TdxDBGridMaskColumn; dxDBGridMaskColumn11: TdxDBGridMaskColumn; dxDBGridMaskColumn12: TdxDBGridMaskColumn; dxDBGridColumn1: TdxDBGridColumn; dxDBGridColumn2: TdxDBGridColumn; dxDBGridColumn3: TdxDBGridColumn; dxDBGridColumn4: TdxDBGridColumn; dxDBGrid1Column18: TdxDBGridMaskColumn; dxDBGridMaskColumn13: TdxDBGridMaskColumn; dxDBGridDateColumn2: TdxDBGridDateColumn; dxDBGridMaskColumn14: TdxDBGridMaskColumn; dxDBGridDateColumn3: TdxDBGridDateColumn; dxDBGridMaskColumn15: TdxDBGridMaskColumn; dxDBGridDateColumn4: TdxDBGridDateColumn; bsSkinButton28: TbsSkinButton; bsSkinButton29: TbsSkinButton; bsSkinPageControl3: TbsSkinPageControl; bsSkinTabSheet4: TbsSkinTabSheet; dxDBGrid3: TdxDBGrid; dxDBGridMaskColumn16: TdxDBGridMaskColumn; dxDBGridMaskColumn17: TdxDBGridMaskColumn; dxDBGridMaskColumn18: TdxDBGridMaskColumn; dxDBGridMaskColumn19: TdxDBGridMaskColumn; dxDBGridMaskColumn20: TdxDBGridMaskColumn; dxDBGridColumn5: TdxDBGridColumn; dxDBGridColumn6: TdxDBGridColumn; dxDBGridMaskColumn21: TdxDBGridMaskColumn; dxDBGridDateColumn5: TdxDBGridDateColumn; dxDBGridDateColumn6: TdxDBGridDateColumn; dxDBGridMaskColumn22: TdxDBGridMaskColumn; dxDBGridMaskColumn23: TdxDBGridMaskColumn; dxDBGridMaskColumn24: TdxDBGridMaskColumn; dxDBGridMaskColumn25: TdxDBGridMaskColumn; dxDBGridMaskColumn26: TdxDBGridMaskColumn; dxDBGridColumn7: TdxDBGridColumn; dxDBGridColumn8: TdxDBGridColumn; dxDBGridMaskColumn27: TdxDBGridMaskColumn; dxDBGridMaskColumn28: TdxDBGridMaskColumn; dxDBGridMaskColumn29: TdxDBGridMaskColumn; dxDBGridMaskColumn30: TdxDBGridMaskColumn; bsSkinTabSheet5: TbsSkinTabSheet; bsSkinTabSheet6: TbsSkinTabSheet; bsSkinTabSheet7: TbsSkinTabSheet; bsSkinPanel7: TbsSkinPanel; Label54: TLabel; DBEdit16: TDBEdit; Label21: TLabel; DBEdit12: TDBEdit; Label57: TLabel; DBEdit17: TDBEdit; Label59: TLabel; DBEdit18: TDBEdit; Label63: TLabel; RxDBLookupCombo3: TRxDBLookupCombo; PopupMenu2: TPopupMenu; N1: TMenuItem; N2: TMenuItem; N20: TMenuItem; bsSkinButton31: TbsSkinButton; XPMenu1: TXPMenu; v_fee_do_seai: TADOQuery; v_fee_do_seai1: TDataSource; dxDBGrid4: TdxDBGrid; dxDBGridMaskColumn31: TdxDBGridMaskColumn; dxDBGridMaskColumn32: TdxDBGridMaskColumn; dxDBGridMaskColumn33: TdxDBGridMaskColumn; dxDBGridMaskColumn34: TdxDBGridMaskColumn; dxDBGridMaskColumn35: TdxDBGridMaskColumn; dxDBGridColumn9: TdxDBGridColumn; dxDBGridColumn10: TdxDBGridColumn; dxDBGridMaskColumn36: TdxDBGridMaskColumn; dxDBGridDateColumn7: TdxDBGridDateColumn; dxDBGridDateColumn8: TdxDBGridDateColumn; dxDBGridMaskColumn37: TdxDBGridMaskColumn; dxDBGridMaskColumn38: TdxDBGridMaskColumn; dxDBGridMaskColumn39: TdxDBGridMaskColumn; dxDBGridMaskColumn40: TdxDBGridMaskColumn; dxDBGridMaskColumn41: TdxDBGridMaskColumn; dxDBGridColumn11: TdxDBGridColumn; dxDBGridColumn12: TdxDBGridColumn; dxDBGridMaskColumn42: TdxDBGridMaskColumn; dxDBGridMaskColumn43: TdxDBGridMaskColumn; dxDBGridMaskColumn44: TdxDBGridMaskColumn; dxDBGridMaskColumn45: TdxDBGridMaskColumn; N3: TMenuItem; N4: TMenuItem; v_fee_do_aire: TADOQuery; v_fee_do_aire1: TDataSource; v_fee_do_airi: TADOQuery; v_fee_do_airi1: TDataSource; dxDBGrid5: TdxDBGrid; dxDBGridMaskColumn46: TdxDBGridMaskColumn; dxDBGridMaskColumn47: TdxDBGridMaskColumn; dxDBGridMaskColumn48: TdxDBGridMaskColumn; dxDBGridMaskColumn49: TdxDBGridMaskColumn; dxDBGridMaskColumn50: TdxDBGridMaskColumn; dxDBGridColumn13: TdxDBGridColumn; dxDBGridColumn14: TdxDBGridColumn; dxDBGridMaskColumn51: TdxDBGridMaskColumn; dxDBGridDateColumn9: TdxDBGridDateColumn; dxDBGridDateColumn10: TdxDBGridDateColumn; dxDBGridMaskColumn52: TdxDBGridMaskColumn; dxDBGridMaskColumn53: TdxDBGridMaskColumn; dxDBGridMaskColumn54: TdxDBGridMaskColumn; dxDBGridColumn15: TdxDBGridColumn; dxDBGridColumn16: TdxDBGridColumn; dxDBGridMaskColumn55: TdxDBGridMaskColumn; dxDBGridMaskColumn56: TdxDBGridMaskColumn; dxDBGridMaskColumn57: TdxDBGridMaskColumn; dxDBGrid6: TdxDBGrid; dxDBGridMaskColumn58: TdxDBGridMaskColumn; dxDBGridMaskColumn59: TdxDBGridMaskColumn; dxDBGridMaskColumn60: TdxDBGridMaskColumn; dxDBGridMaskColumn61: TdxDBGridMaskColumn; dxDBGridMaskColumn62: TdxDBGridMaskColumn; dxDBGridColumn17: TdxDBGridColumn; dxDBGridColumn18: TdxDBGridColumn; dxDBGridMaskColumn63: TdxDBGridMaskColumn; dxDBGridDateColumn11: TdxDBGridDateColumn; dxDBGridDateColumn12: TdxDBGridDateColumn; dxDBGridMaskColumn64: TdxDBGridMaskColumn; dxDBGridMaskColumn65: TdxDBGridMaskColumn; dxDBGridMaskColumn66: TdxDBGridMaskColumn; dxDBGridColumn19: TdxDBGridColumn; dxDBGridColumn20: TdxDBGridColumn; dxDBGridMaskColumn67: TdxDBGridMaskColumn; dxDBGridMaskColumn68: TdxDBGridMaskColumn; dxDBGridMaskColumn69: TdxDBGridMaskColumn; PopupMenu1: TPopupMenu; N10: TMenuItem; N11: TMenuItem; N14: TMenuItem; N13: TMenuItem; N12: TMenuItem; N15: TMenuItem; N16: TMenuItem; bsSkinButton22: TbsSkinButton; bsSkinButton27: TbsSkinButton; bsSkinButton32: TbsSkinButton; ADOQuery1: TADOQuery; DataSource1: TDataSource; ADOQuery2: TADOQuery; DataSource2: TDataSource; ADOQuery3: TADOQuery; DataSource3: TDataSource; ADOQuery4: TADOQuery; DataSource4: TDataSource; PopupMenu3: TPopupMenu; N17: TMenuItem; N18: TMenuItem; N34: TMenuItem; N35: TMenuItem; N36: TMenuItem; MenuItem1: TMenuItem; N6: TMenuItem; N5: TMenuItem; MenuItem2: TMenuItem; bsSkinPanel4: TbsSkinPanel; Label1: TLabel; Label4: TLabel; Label7: TLabel; Label13: TLabel; Label2: TLabel; Label5: TLabel; Label8: TLabel; Label14: TLabel; Label9: TLabel; Label3: TLabel; Label6: TLabel; Label10: TLabel; Label11: TLabel; Label16: TLabel; Label15: TLabel; bsSkinPanel5: TbsSkinPanel; Label25: TLabel; Label17: TLabel; Label18: TLabel; Label20: TLabel; Label19: TLabel; Label12: TLabel; Label64: TLabel; Label65: TLabel; DBEdit14: TDBEdit; DBEdit1: TDBEdit; DBEdit5: TDBEdit; DBEdit7: TDBEdit; DBEdit8: TDBEdit; DBEdit2: TDBEdit; DBEdit3: TDBEdit; DBEdit4: TDBEdit; DBMemo1: TDBMemo; DBEdit6: TDBEdit; DBEdit9: TDBEdit; DBMemo2: TDBMemo; DBEdit10: TDBEdit; DBEdit11: TDBEdit; DBEdit20: TDBEdit; DBEdit21: TDBEdit; DBMemo3: TDBMemo; DBEdit22: TDBEdit; DBEdit23: TDBEdit; DBEdit24: TDBEdit; DBEdit25: TDBEdit; DBEdit26: TDBEdit; DBEdit28: TDBEdit; dxDBGrid2Column25: TdxDBGridColumn; dxDBGrid2Column26: TdxDBGridColumn; dxDBGrid3Column22: TdxDBGridColumn; dxDBGrid4Column22: TdxDBGridColumn; dxDBGrid5Column19: TdxDBGridColumn; dxDBGrid6Column19: TdxDBGridColumn; t_ch_invoice_head: TADOQuery; t_ch_invoice_head1: TDataSource; dxDBGrid3Column23: TdxDBGridColumn; dxDBGrid6Column20: TdxDBGridColumn; dxDBGrid5Column20: TdxDBGridColumn; dxDBGrid4Column23: TdxDBGridColumn; N7: TMenuItem; N8: TMenuItem; N9: TMenuItem; N19: TMenuItem; bsSkinNotebook1: TbsSkinNotebook; dxDBGrid1: TdxDBGrid; dxDBGrid1Column1: TdxDBGridMaskColumn; dxDBGrid1Column38: TdxDBGridCheckColumn; dxDBGrid1Column2: TdxDBGridMaskColumn; dxDBGrid1Column3: TdxDBGridMaskColumn; dxDBGrid1Column4: TdxDBGridMaskColumn; dxDBGrid1Column5: TdxDBGridDateColumn; dxDBGrid1Column6: TdxDBGridMaskColumn; dxDBGrid1Column7: TdxDBGridMaskColumn; dxDBGrid1Column8: TdxDBGridMaskColumn; dxDBGrid1Column9: TdxDBGridMaskColumn; dxDBGrid1Column10: TdxDBGridDateColumn; dxDBGrid1Column11: TdxDBGridMaskColumn; dxDBGrid1Column12: TdxDBGridMaskColumn; dxDBGrid1Column13: TdxDBGridMaskColumn; dxDBGrid1Column14: TdxDBGridMaskColumn; dxDBGrid1Column15: TdxDBGridMaskColumn; dxDBGrid1Column16: TdxDBGridMaskColumn; dxDBGrid1Column17: TdxDBGridMaskColumn; dxDBGrid1Column37: TdxDBGridColumn; dxDBGrid1Column19: TdxDBGridColumn; dxDBGrid1Column20: TdxDBGridColumn; dxDBGrid1Column21: TdxDBGridColumn; dxDBGrid1Column22: TdxDBGridMaskColumn; dxDBGrid1Column23: TdxDBGridMaskColumn; dxDBGrid1Column24: TdxDBGridMaskColumn; dxDBGrid1Column25: TdxDBGridCheckColumn; dxDBGrid1Column26: TdxDBGridMaskColumn; dxDBGrid1Column27: TdxDBGridDateColumn; dxDBGrid1Column28: TdxDBGridMaskColumn; dxDBGrid1Column32: TdxDBGridCheckColumn; dxDBGrid1Column29: TdxDBGridCheckColumn; dxDBGrid1Column30: TdxDBGridMaskColumn; dxDBGrid1Column35: TdxDBGridMaskColumn; dxDBGrid1Column36: TdxDBGridDateColumn; dxDBGrid1Column31: TdxDBGridMaskColumn; dxDBGrid1Column33: TdxDBGridMaskColumn; dxDBGrid1Column34: TdxDBGridDateColumn; bsSkinPageControl4: TbsSkinPageControl; pagesheet2: TbsSkinTabSheet; bsSkinPageControl5: TbsSkinPageControl; bsSkinTabSheet8: TbsSkinTabSheet; dxDBGrid7: TdxDBGrid; dxDBGridMaskColumn70: TdxDBGridMaskColumn; dxDBGridMaskColumn71: TdxDBGridMaskColumn; dxDBGridMaskColumn72: TdxDBGridMaskColumn; dxDBGridMaskColumn73: TdxDBGridMaskColumn; dxDBGridMaskColumn74: TdxDBGridMaskColumn; dxDBGridColumn21: TdxDBGridColumn; dxDBGrid7Column23: TdxDBGridColumn; dxDBGridColumn22: TdxDBGridColumn; dxDBGridMaskColumn75: TdxDBGridMaskColumn; dxDBGrid7Column22: TdxDBGridColumn; dxDBGridDateColumn13: TdxDBGridDateColumn; dxDBGridDateColumn14: TdxDBGridDateColumn; dxDBGridMaskColumn76: TdxDBGridMaskColumn; dxDBGridMaskColumn77: TdxDBGridMaskColumn; dxDBGridMaskColumn78: TdxDBGridMaskColumn; dxDBGridMaskColumn79: TdxDBGridMaskColumn; dxDBGridMaskColumn80: TdxDBGridMaskColumn; dxDBGridColumn23: TdxDBGridColumn; dxDBGridColumn24: TdxDBGridColumn; dxDBGridMaskColumn81: TdxDBGridMaskColumn; dxDBGridMaskColumn82: TdxDBGridMaskColumn; dxDBGridMaskColumn83: TdxDBGridMaskColumn; dxDBGridMaskColumn84: TdxDBGridMaskColumn; bsSkinTabSheet9: TbsSkinTabSheet; dxDBGrid8: TdxDBGrid; dxDBGridMaskColumn85: TdxDBGridMaskColumn; dxDBGridMaskColumn86: TdxDBGridMaskColumn; dxDBGridMaskColumn87: TdxDBGridMaskColumn; dxDBGridMaskColumn88: TdxDBGridMaskColumn; dxDBGridMaskColumn89: TdxDBGridMaskColumn; dxDBGridColumn25: TdxDBGridColumn; dxDBGrid8Column23: TdxDBGridColumn; dxDBGridColumn26: TdxDBGridColumn; dxDBGridMaskColumn90: TdxDBGridMaskColumn; dxDBGrid8Column22: TdxDBGridColumn; dxDBGridDateColumn15: TdxDBGridDateColumn; dxDBGridDateColumn16: TdxDBGridDateColumn; dxDBGridMaskColumn91: TdxDBGridMaskColumn; dxDBGridMaskColumn92: TdxDBGridMaskColumn; dxDBGridMaskColumn93: TdxDBGridMaskColumn; dxDBGridMaskColumn94: TdxDBGridMaskColumn; dxDBGridMaskColumn95: TdxDBGridMaskColumn; dxDBGridColumn27: TdxDBGridColumn; dxDBGridColumn28: TdxDBGridColumn; dxDBGridMaskColumn96: TdxDBGridMaskColumn; dxDBGridMaskColumn97: TdxDBGridMaskColumn; dxDBGridMaskColumn98: TdxDBGridMaskColumn; dxDBGridMaskColumn99: TdxDBGridMaskColumn; bsSkinTabSheet10: TbsSkinTabSheet; dxDBGrid9: TdxDBGrid; dxDBGridMaskColumn100: TdxDBGridMaskColumn; dxDBGridMaskColumn101: TdxDBGridMaskColumn; dxDBGridMaskColumn102: TdxDBGridMaskColumn; dxDBGridMaskColumn103: TdxDBGridMaskColumn; dxDBGridMaskColumn104: TdxDBGridMaskColumn; dxDBGridColumn29: TdxDBGridColumn; dxDBGrid9Column20: TdxDBGridColumn; dxDBGridColumn30: TdxDBGridColumn; dxDBGridMaskColumn105: TdxDBGridMaskColumn; dxDBGrid9Column19: TdxDBGridColumn; dxDBGridDateColumn17: TdxDBGridDateColumn; dxDBGridDateColumn18: TdxDBGridDateColumn; dxDBGridMaskColumn106: TdxDBGridMaskColumn; dxDBGridMaskColumn107: TdxDBGridMaskColumn; dxDBGridMaskColumn108: TdxDBGridMaskColumn; dxDBGridColumn31: TdxDBGridColumn; dxDBGridColumn32: TdxDBGridColumn; dxDBGridMaskColumn109: TdxDBGridMaskColumn; dxDBGridMaskColumn110: TdxDBGridMaskColumn; dxDBGridMaskColumn111: TdxDBGridMaskColumn; bsSkinTabSheet12: TbsSkinTabSheet; dxDBGrid10: TdxDBGrid; dxDBGridMaskColumn112: TdxDBGridMaskColumn; dxDBGridMaskColumn113: TdxDBGridMaskColumn; dxDBGridMaskColumn114: TdxDBGridMaskColumn; dxDBGridMaskColumn115: TdxDBGridMaskColumn; dxDBGridMaskColumn116: TdxDBGridMaskColumn; dxDBGridColumn33: TdxDBGridColumn; dxDBGrid10Column20: TdxDBGridColumn; dxDBGridColumn34: TdxDBGridColumn; dxDBGridMaskColumn117: TdxDBGridMaskColumn; dxDBGrid10Column19: TdxDBGridColumn; dxDBGridDateColumn19: TdxDBGridDateColumn; dxDBGridDateColumn20: TdxDBGridDateColumn; dxDBGridMaskColumn118: TdxDBGridMaskColumn; dxDBGridMaskColumn119: TdxDBGridMaskColumn; dxDBGridMaskColumn120: TdxDBGridMaskColumn; dxDBGridColumn35: TdxDBGridColumn; dxDBGridColumn36: TdxDBGridColumn; dxDBGridMaskColumn121: TdxDBGridMaskColumn; dxDBGridMaskColumn122: TdxDBGridMaskColumn; dxDBGridMaskColumn123: TdxDBGridMaskColumn; bsSkinPageControl6: TbsSkinPageControl; bstab1: TbsSkinTabSheet; bstab2: TbsSkinTabSheet; s_invoice: TScrollBox; Shape9: TShape; Label27: TLabel; Label28: TLabel; Label29: TLabel; Label30: TLabel; Shape2: TShape; Label31: TLabel; Label32: TLabel; Shape3: TShape; Label33: TLabel; Label34: TLabel; Shape4: TShape; Shape5: TShape; Label35: TLabel; Label36: TLabel; Label37: TLabel; Label38: TLabel; Shape6: TShape; Label39: TLabel; Label40: TLabel; Shape7: TShape; Label41: TLabel; Label42: TLabel; Shape8: TShape; Shape10: TShape; Label43: TLabel; Shape11: TShape; Shape12: TShape; Shape13: TShape; Label44: TLabel; Label45: TLabel; Shape14: TShape; Label46: TLabel; Label47: TLabel; Label48: TLabel; Label49: TLabel; Label50: TLabel; Label51: TLabel; Label52: TLabel; Label53: TLabel; Label55: TLabel; Label56: TLabel; Label58: TLabel; Label60: TLabel; Label61: TLabel; Label62: TLabel; Shape1: TShape; Label24: TLabel; Label26: TLabel; Label66: TLabel; wwDBDateTimePicker1: TwwDBDateTimePicker; DE_ShipName: TDBEdit; DE_BLNO: TDBEdit; wwDBDateTimePicker2: TwwDBDateTimePicker; DM_ChaCon: TDBMemo; DM_CostType: TDBMemo; DM_Money: TDBMemo; DM: TDBMemo; DE_SumUpper: TDBEdit; DBSumLower: TDBEdit; DE_BusnessNo: TDBEdit; DE_TaxNo: TDBEdit; DE_Maker: TDBEdit; wwDBDateTimePicker3: TwwDBDateTimePicker; wwDBLookupCombo6: TwwDBLookupCombo; wwDBLookupCombo7: TwwDBLookupCombo; DBCheckBox3: TDBCheckBox; wwDBLookupCombo10: TwwDBLookupCombo; wwDBLookupCombo11: TwwDBLookupCombo; wwDBLookupCombo12: TwwDBLookupCombo; RxDBLookupCombo2: TRxDBLookupCombo; DBEdit27: TDBEdit; bsSkinPanel6: TbsSkinPanel; Label22: TLabel; Label23: TLabel; DBEdit13: TDBEdit; DBEdit15: TDBEdit; bsSkinDBCheckRadioBox2: TbsSkinDBCheckRadioBox; bsSkinDBCheckRadioBox3: TbsSkinDBCheckRadioBox; DBEdit29: TDBEdit; wwDBLookupCombo1: TwwDBLookupCombo; Panel1: TPanel; fra_ch_delete_do1: Tfra_ch_delete_do; fra_ch_add_do1: Tfra_ch_add_do; ComboBoxObjBsCard: TDBComboBox; dxDBGrid1Column39: TdxDBGridColumn; dbedt1: TDBEdit; DBEdit19: TDBEdit; DBEdit30: TDBEdit; t_sys_bank: TADOQuery; t_sys_bank1: TDataSource; bsSkinButton38: TbsSkinButton; bsSkinButton33: TbsSkinButton; DBComboBoxEh1: TDBComboBoxEh; dxDBGrid3Column24: TdxDBGridColumn; dxDBGrid3Column25: TdxDBGridColumn; dxDBGrid4Column24: TdxDBGridColumn; dxDBGrid4Column25: TdxDBGridColumn; dxDBGrid5Column21: TdxDBGridColumn; dxDBGrid5Column22: TdxDBGridColumn; dxDBGrid6Column21: TdxDBGridColumn; dxDBGrid6Column22: TdxDBGridColumn; dxDBGrid7Column24: TdxDBGridColumn; dxDBGrid7Column25: TdxDBGridColumn; dxDBGrid8Column24: TdxDBGridColumn; dxDBGrid8Column25: TdxDBGridColumn; bsSkinButton34: TbsSkinButton; bsSkinButton35: TbsSkinButton; v_fee_do_bscard: TADOQuery; v_fee_do_bscard1: TDataSource; bsSkinTabSheet13: TbsSkinTabSheet; dxDBGrid11: TdxDBGrid; dxDBGridMaskColumn124: TdxDBGridMaskColumn; dxDBGridMaskColumn125: TdxDBGridMaskColumn; dxDBGridMaskColumn126: TdxDBGridMaskColumn; dxDBGridMaskColumn127: TdxDBGridMaskColumn; dxDBGridMaskColumn128: TdxDBGridMaskColumn; dxDBGridColumn37: TdxDBGridColumn; dxDBGridColumn38: TdxDBGridColumn; dxDBGridColumn39: TdxDBGridColumn; dxDBGridMaskColumn129: TdxDBGridMaskColumn; dxDBGridColumn40: TdxDBGridColumn; dxDBGridDateColumn21: TdxDBGridDateColumn; dxDBGridDateColumn22: TdxDBGridDateColumn; dxDBGridMaskColumn130: TdxDBGridMaskColumn; dxDBGridMaskColumn131: TdxDBGridMaskColumn; dxDBGridMaskColumn132: TdxDBGridMaskColumn; dxDBGridMaskColumn133: TdxDBGridMaskColumn; dxDBGridMaskColumn134: TdxDBGridMaskColumn; dxDBGridColumn41: TdxDBGridColumn; dxDBGridColumn42: TdxDBGridColumn; dxDBGridMaskColumn135: TdxDBGridMaskColumn; dxDBGridMaskColumn136: TdxDBGridMaskColumn; dxDBGridMaskColumn137: TdxDBGridMaskColumn; dxDBGridMaskColumn138: TdxDBGridMaskColumn; dxDBGridColumn43: TdxDBGridColumn; dxDBGridColumn44: TdxDBGridColumn; dxDBGrid11Column26: TdxDBGridColumn; bsSkinTabSheet14: TbsSkinTabSheet; dxDBGrid12: TdxDBGrid; dxDBGridMaskColumn139: TdxDBGridMaskColumn; dxDBGridMaskColumn140: TdxDBGridMaskColumn; dxDBGridMaskColumn141: TdxDBGridMaskColumn; dxDBGridMaskColumn142: TdxDBGridMaskColumn; dxDBGridMaskColumn143: TdxDBGridMaskColumn; dxDBGridColumn45: TdxDBGridColumn; dxDBGridColumn46: TdxDBGridColumn; dxDBGridColumn47: TdxDBGridColumn; dxDBGridColumn48: TdxDBGridColumn; dxDBGridMaskColumn144: TdxDBGridMaskColumn; dxDBGridColumn49: TdxDBGridColumn; dxDBGridDateColumn23: TdxDBGridDateColumn; dxDBGridDateColumn24: TdxDBGridDateColumn; dxDBGridMaskColumn145: TdxDBGridMaskColumn; dxDBGridMaskColumn146: TdxDBGridMaskColumn; dxDBGridMaskColumn147: TdxDBGridMaskColumn; dxDBGridMaskColumn148: TdxDBGridMaskColumn; dxDBGridMaskColumn149: TdxDBGridMaskColumn; dxDBGridColumn50: TdxDBGridColumn; dxDBGridColumn51: TdxDBGridColumn; dxDBGridColumn52: TdxDBGridColumn; dxDBGridMaskColumn150: TdxDBGridMaskColumn; dxDBGridMaskColumn151: TdxDBGridMaskColumn; dxDBGridMaskColumn152: TdxDBGridMaskColumn; dxDBGridMaskColumn153: TdxDBGridMaskColumn; dxDBGrid12Column26: TdxDBGridColumn; Label67: TLabel; DBEdit31: TDBEdit; Label68: TLabel; DBEdit32: TDBEdit; bsSkinButton36: TbsSkinButton; DBCheckBox1: TDBCheckBox; DBComboBoxEh2: TDBComboBoxEh; Label69: TLabel; SaveDialog1: TSaveDialog; Label70: TLabel; DBEdit33: TDBEdit; Label71: TLabel; DBEdit34: TDBEdit; bsSkinButton15: TbsSkinButton; bsSkinButton20: TbsSkinButton; DBComboBoxEh3: TDBComboBoxEh; qry_UPDINV: TADOQuery; lbl1: TLabel; qry_getPath: TADOQuery; kbmMemTable1: TkbmMemTable; kbmMemTable2: TkbmMemTable; tmr_UPDINV: TTimer; btn1: TbsSkinButton; edt_from: TEdit; btn2: TbsSkinButton; bsknpnl1_bankflow: TbsSkinPanel; btn4_bankflow: TbsSkinButton; dxdbgrdchckclmnDBGrid1Column40: TdxDBGridCheckColumn; Label72: TLabel; DBEdit35: TDBEdit; bsSkinButton37: TbsSkinButton; t_ch_invoice_expitem: TADOQuery; bsSkinCheckRadioBox1: TbsSkinCheckRadioBox; bsSkinButton39: TbsSkinButton; ADOQuery5: TADOQuery; bsSkinButton40: TbsSkinButton; bsSkinPanel8: TbsSkinPanel; bsSkinButton41: TbsSkinButton; connExcel: TADOConnection; qry1Excel: TADOQuery; t_ch_invoice_invno: TADOQuery; t_ch_invoice_invno1: TDataSource; bsSkinGroupBox1: TbsSkinGroupBox; dxDBGrid13: TdxDBGrid; dxDBGrid13Column1: TdxDBGridColumn; DBEdit36: TDBEdit; Label73: TLabel; t_crm_client_sales: TADOQuery; t_crm_client_Invoice: TADOQuery; dxDBGrid1Column40: TdxDBGridColumn; dxDBGrid1Column41: TdxDBGridCheckColumn; DBNavigator1: TDBNavigator; dxDBGrid1Column42: TdxDBGridColumn; dxDBGrid1Column43: TdxDBGridColumn; dxDBGrid1Column44: TdxDBGridColumn; dxDBGrid1Column45: TdxDBGridColumn; dxDBGrid1Column46: TdxDBGridColumn; dxDBGrid1Column47: TdxDBGridColumn; dxDBGrid1Column48: TdxDBGridColumn; dxDBGrid1Column49: TdxDBGridColumn; dxDBGrid1Column50: TdxDBGridColumn; dxDBGrid1Column51: TdxDBGridColumn; dxDBGrid1Column52: TdxDBGridColumn; dxDBGrid1Column53: TdxDBGridColumn; dxDBGrid1Column54: TdxDBGridColumn; procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure bsSkinButton5Click(Sender: TObject); procedure bsSkinPanel1Resize(Sender: TObject); procedure bsSkinPanel3Resize(Sender: TObject); procedure FormShow(Sender: TObject); procedure t_ch_invoiceAfterInsert(DataSet: TDataSet); procedure bsSkinButton4Click(Sender: TObject); procedure bsSkinButton11Click(Sender: TObject); procedure bsSkinButton13Click(Sender: TObject); procedure t_ch_invoiceBeforeInsert(DataSet: TDataSet); procedure t_ch_invoiceBeforePost(DataSet: TDataSet); procedure bsSkinButton18Click(Sender: TObject); procedure bsSkinButton1Click(Sender: TObject); procedure bsSkinButton9Click(Sender: TObject); procedure bsSkinButton16Click(Sender: TObject); procedure N1Click(Sender: TObject); procedure N20Click(Sender: TObject); procedure t_ch_invoiceBeforeEdit(DataSet: TDataSet); procedure RxDBLookupCombo2Change(Sender: TObject); procedure DM_MoneyChange(Sender: TObject); procedure DM_MoneyExit(Sender: TObject); procedure DBSumLowerChange(Sender: TObject); procedure bsSkinButton17Click(Sender: TObject); procedure bsSkinButton12Click(Sender: TObject); procedure bsSkinButton23Click(Sender: TObject); procedure bsSkinButton28Click(Sender: TObject); procedure bsSkinButton29Click(Sender: TObject); procedure bsSkinButton30Click(Sender: TObject); procedure bsSkinButton26Click(Sender: TObject); procedure bsSkinButton25Click(Sender: TObject); procedure RxDBLookupCombo3Enter(Sender: TObject); procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); procedure bsSkinButton24Click(Sender: TObject); procedure bsSkinButton3Click(Sender: TObject); procedure bsSkinButton31Click(Sender: TObject); procedure N3Click(Sender: TObject); procedure DBEdit12KeyPress(Sender: TObject; var Key: Char); procedure DBEdit16KeyPress(Sender: TObject; var Key: Char); procedure DBEdit17KeyPress(Sender: TObject; var Key: Char); procedure DBEdit18KeyPress(Sender: TObject; var Key: Char); procedure RxDBLookupCombo3KeyPress(Sender: TObject; var Key: Char); procedure RxDBLookupCombo2KeyPress(Sender: TObject; var Key: Char); procedure DE_ShipNameKeyPress(Sender: TObject; var Key: Char); procedure DE_BLNOKeyPress(Sender: TObject; var Key: Char); procedure wwDBDateTimePicker2KeyPress(Sender: TObject; var Key: Char); procedure wwDBLookupCombo10KeyPress(Sender: TObject; var Key: Char); procedure wwDBLookupCombo11KeyPress(Sender: TObject; var Key: Char); procedure wwDBLookupCombo12KeyPress(Sender: TObject; var Key: Char); procedure DE_SumUpperKeyPress(Sender: TObject; var Key: Char); procedure DBSumLowerKeyPress(Sender: TObject; var Key: Char); procedure wwDBLookupCombo6KeyPress(Sender: TObject; var Key: Char); procedure DE_BusnessNoKeyPress(Sender: TObject; var Key: Char); procedure DE_TaxNoKeyPress(Sender: TObject; var Key: Char); procedure DE_MakerKeyPress(Sender: TObject; var Key: Char); procedure RxDBLookupCombo3Change(Sender: TObject); procedure bsSkinButton10Click(Sender: TObject); procedure N10Click(Sender: TObject); procedure N14Click(Sender: TObject); procedure N12Click(Sender: TObject); procedure N16Click(Sender: TObject); procedure dxDBGrid1ColumnSorting(Sender: TObject; Column: TdxDBTreeListColumn; var Allow: Boolean); procedure dxDBGrid2ColumnSorting(Sender: TObject; Column: TdxDBTreeListColumn; var Allow: Boolean); procedure bsSkinButton22Click(Sender: TObject); procedure bsSkinButton27Click(Sender: TObject); procedure bsSkinButton32Click(Sender: TObject); procedure N17Click(Sender: TObject); procedure N34Click(Sender: TObject); procedure N36Click(Sender: TObject); procedure N6Click(Sender: TObject); procedure MenuItem2Click(Sender: TObject); procedure dxDBGridMaskColumn2CustomDraw(Sender: TObject; ACanvas: TCanvas; ARect: TRect; ANode: TdxTreeListNode; AColumn: TdxDBTreeListColumn; const AText: String; AFont: TFont; var AColor: TColor; ASelected, AFocused: Boolean; var ADone: Boolean); procedure DBEdit1Change(Sender: TObject); procedure DBEdit29KeyPress(Sender: TObject; var Key: Char); procedure wwDBDateTimePicker1KeyPress(Sender: TObject; var Key: Char); procedure wwDBLookupCombo1KeyPress(Sender: TObject; var Key: Char); procedure DBEdit27KeyPress(Sender: TObject; var Key: Char); procedure t_ch_invoiceAfterPost(DataSet: TDataSet); procedure N8Click(Sender: TObject); procedure N19Click(Sender: TObject); procedure DBEdit12Change(Sender: TObject); procedure DE_BLNODblClick(Sender: TObject); procedure DBEdit29DblClick(Sender: TObject); procedure t_ch_invoiceAfterScroll(DataSet: TDataSet); procedure t_ch_invoice1DataChange(Sender: TObject; Field: TField); procedure ComboBoxObjBsCardDropDown(Sender: TObject); procedure ComboBoxObjBsCardKeyPress(Sender: TObject; var Key: Char); procedure dbedt1KeyPress(Sender: TObject; var Key: Char); procedure DBEdit30Change(Sender: TObject); procedure RxDBLookupCombo2Enter(Sender: TObject); procedure bsSkinButton38Click(Sender: TObject); procedure bsSkinButton33Click(Sender: TObject); procedure dxDBGrid1CustomDraw(Sender: TObject; ACanvas: TCanvas; ARect: TRect; ANode: TdxTreeListNode; AColumn: TdxDBTreeListColumn; const AText: String; AFont: TFont; var AColor: TColor; ASelected, AFocused: Boolean; var ADone: Boolean); procedure wwDBLookupCombo6Change(Sender: TObject); procedure DBComboBoxEh1DropDown(Sender: TObject); procedure dbedt1Change(Sender: TObject); procedure DBComboBoxEh1CloseUp(Sender: TObject; Accept: Boolean); procedure bsSkinPageControl1Change(Sender: TObject); procedure bsSkinPageControl6Change(Sender: TObject); procedure dxDBGrid3Column25CustomDraw(Sender: TObject; ACanvas: TCanvas; ARect: TRect; ANode: TdxTreeListNode; AColumn: TdxDBTreeListColumn; const AText: String; AFont: TFont; var AColor: TColor; ASelected, AFocused: Boolean; var ADone: Boolean); procedure dxDBGrid4Column25CustomDraw(Sender: TObject; ACanvas: TCanvas; ARect: TRect; ANode: TdxTreeListNode; AColumn: TdxDBTreeListColumn; const AText: String; AFont: TFont; var AColor: TColor; ASelected, AFocused: Boolean; var ADone: Boolean); procedure dxDBGrid5Column22CustomDraw(Sender: TObject; ACanvas: TCanvas; ARect: TRect; ANode: TdxTreeListNode; AColumn: TdxDBTreeListColumn; const AText: String; AFont: TFont; var AColor: TColor; ASelected, AFocused: Boolean; var ADone: Boolean); procedure dxDBGrid6Column22CustomDraw(Sender: TObject; ACanvas: TCanvas; ARect: TRect; ANode: TdxTreeListNode; AColumn: TdxDBTreeListColumn; const AText: String; AFont: TFont; var AColor: TColor; ASelected, AFocused: Boolean; var ADone: Boolean); procedure dxDBGrid3Column24CustomDraw(Sender: TObject; ACanvas: TCanvas; ARect: TRect; ANode: TdxTreeListNode; AColumn: TdxDBTreeListColumn; const AText: String; AFont: TFont; var AColor: TColor; ASelected, AFocused: Boolean; var ADone: Boolean); procedure dxDBGrid4Column24CustomDraw(Sender: TObject; ACanvas: TCanvas; ARect: TRect; ANode: TdxTreeListNode; AColumn: TdxDBTreeListColumn; const AText: String; AFont: TFont; var AColor: TColor; ASelected, AFocused: Boolean; var ADone: Boolean); procedure dxDBGrid7Column24CustomDraw(Sender: TObject; ACanvas: TCanvas; ARect: TRect; ANode: TdxTreeListNode; AColumn: TdxDBTreeListColumn; const AText: String; AFont: TFont; var AColor: TColor; ASelected, AFocused: Boolean; var ADone: Boolean); procedure dxDBGrid8Column24CustomDraw(Sender: TObject; ACanvas: TCanvas; ARect: TRect; ANode: TdxTreeListNode; AColumn: TdxDBTreeListColumn; const AText: String; AFont: TFont; var AColor: TColor; ASelected, AFocused: Boolean; var ADone: Boolean); procedure dxDBGrid7Column25CustomDraw(Sender: TObject; ACanvas: TCanvas; ARect: TRect; ANode: TdxTreeListNode; AColumn: TdxDBTreeListColumn; const AText: String; AFont: TFont; var AColor: TColor; ASelected, AFocused: Boolean; var ADone: Boolean); procedure dxDBGrid8Column25CustomDraw(Sender: TObject; ACanvas: TCanvas; ARect: TRect; ANode: TdxTreeListNode; AColumn: TdxDBTreeListColumn; const AText: String; AFont: TFont; var AColor: TColor; ASelected, AFocused: Boolean; var ADone: Boolean); procedure bsSkinButton35Click(Sender: TObject); procedure bsSkinPanel2Resize(Sender: TObject); procedure bsSkinPageControl2Change(Sender: TObject); procedure dxDBGridColumn43CustomDraw(Sender: TObject; ACanvas: TCanvas; ARect: TRect; ANode: TdxTreeListNode; AColumn: TdxDBTreeListColumn; const AText: String; AFont: TFont; var AColor: TColor; ASelected, AFocused: Boolean; var ADone: Boolean); procedure dxDBGridColumn44CustomDraw(Sender: TObject; ACanvas: TCanvas; ARect: TRect; ANode: TdxTreeListNode; AColumn: TdxDBTreeListColumn; const AText: String; AFont: TFont; var AColor: TColor; ASelected, AFocused: Boolean; var ADone: Boolean); procedure fra_ch_add_do1MenuItem1Click(Sender: TObject); procedure fra_ch_add_do1bsSkinButton11Click(Sender: TObject); procedure bsSkinButton36Click(Sender: TObject); procedure DBComboBoxEh2DropDown(Sender: TObject); procedure DM_CostTypeKeyPress(Sender: TObject; var Key: Char); procedure DBComboBoxEh2CloseUp(Sender: TObject; Accept: Boolean); procedure DBComboBoxEh2Change(Sender: TObject); procedure bsSkinButton15Click(Sender: TObject); procedure bsSkinButton20Click(Sender: TObject); procedure dxDBGrid1Click(Sender: TObject); procedure tmr_UPDINVTimer(Sender: TObject); procedure btn1Click(Sender: TObject); procedure dxDBGrid1ChangeNode(Sender: TObject; OldNode, Node: TdxTreeListNode); procedure btn4_bankflowClick(Sender: TObject); procedure bsSkinButton37Click(Sender: TObject); procedure bsSkinButton34Click(Sender: TObject); procedure bsSkinButton39Click(Sender: TObject); procedure bsSkinButton40Click(Sender: TObject); procedure bsSkinButton41Click(Sender: TObject); procedure t_ch_invoice_invnoAfterInsert(DataSet: TDataSet); procedure t_ch_invoice_invnoAfterPost(DataSet: TDataSet); private shiji:double; KPpath:string; Local_SH:string; DZDH:string; OLD_IN_ID:string; NEW_IN_ID:string; m_bankflowRight:boolean;//银行流水权限 function getfeestr:boolean; procedure readcustomer(); procedure readfeename(); procedure Change_INV(IN_ID:string ); procedure UPDINV(IN_ID:string ); procedure setBankflowButtonState();//设置银行流水匹配按钮的状态 procedure expduiINV(exptype:Integer); procedure expINV(exptype:Integer); procedure expDZduiINV(exptype:Integer); procedure expDZINV(exptype:Integer); procedure expDZEXCELINV(exptype:Integer); procedure expDZEXCELDuiINV(exptype:Integer); { Private declarations } public fname1,fname2,fname3,fname4,fname5,fname6,fname7,fnum:string; fprice1,fprice2,fprice3,fprice4,fprice5,fprice6,fprice7,invremarks:string; main,vessldate,feinum,bibie:thandle; { Public declarations } end; var ch_invoice_open:boolean; frm_ch_invoice: Tfrm_ch_invoice; invcontrid:integer; function EnumChildWindowsProc(hwnd,lparam:Integer):Boolean;stdcall;//遍历窗体控件 implementation uses u_main, my_sys_function, u_data_share, u_ch_invoice_add, u_ch_shen_query, u_ch_invoice_query, u_ch_invoice_addone, u_ch_invoice_expitems; {$R *.dfm} procedure Tfrm_ch_invoice.FormClose(Sender: TObject; var Action: TCloseAction); begin ch_invoice_open:=false; savereggrid(dxdbgrid1,caption+'1'); savereggrid(dxdbgrid2,caption+'2'); frm_ch_invoice.Hide; frm_ch_invoice.ManualFloat(frm_ch_invoice.BoundsRect ); frm_main.freeTabs('frm_ch_invoice'); action:=cafree; frm_ch_invoice:=nil; end; procedure Tfrm_ch_invoice.bsSkinButton5Click(Sender: TObject); begin close; end; procedure Tfrm_ch_invoice.bsSkinPanel1Resize(Sender: TObject); var i:integer; begin i:=round(bsSkinPanel1.Width/9); bsSkinButton16.Width:=i; bsSkinButton17.Width:=i; // bsSkinButton15.Width:=i; // bsSkinButton20.Width:=i; bsSkinButton4.Width:=i; bsSkinButton11.Width:=i; bsSkinButton12.Width:=i; bsSkinButton13.Width:=i; bsSkinButton18.Width:=i; bsSkinButton19.Width:=i; end; procedure Tfrm_ch_invoice.bsSkinPanel3Resize(Sender: TObject); var i:integer; begin //计算按钮长度 if strtobool(get_parameters_value(1,'false'))then begin bsSkinButton25.Caption:='开出发票'; bsSkinButton22.Visible:=false; bsSkinButton27.Visible:=false; i:=round(bsSkinPanel3.Width/10); bsSkinButton23.Width:=i; bsSkinButton24.Width:=i; bsSkinButton28.Width:=i; bsSkinButton29.Width:=i; bsSkinButton30.Width:=i; bsSkinButton25.Width:=i; bsSkinButton26.Width:=i; bsSkinButton31.Width:=i; bsSkinButton33.Width:=i; end else begin bsSkinButton25.Caption:='开出发票'; bsSkinButton22.Visible:=true; bsSkinButton27.Visible:=true; i:=round(bsSkinPanel3.Width/13); bsSkinButton23.Width:=i; bsSkinButton24.Width:=i; bsSkinButton28.Width:=i; bsSkinButton29.Width:=i; bsSkinButton30.Width:=i; bsSkinButton25.Width:=i; bsSkinButton26.Width:=i; bsSkinButton31.Width:=i; bsSkinButton22.Width:=i; bsSkinButton27.Width:=i; bsSkinButton23.Width:=i; bsSkinButton33.Width:=i; end; bsSkinButton32.Left:=dxDBGrid2.Width-bsSkinButton32.Width-20; end; procedure Tfrm_ch_invoice.FormShow(Sender: TObject); begin t_sys_bank.open; t_ch_invoice.close; t_ch_invoice.sql.clear; t_ch_invoice.sql.add('select top 100 * from t_ch_invoice order by 开票日期 desc,发票号码 desc'); t_ch_invoice.open; ch_invoice_open:=true; TNumericField(t_ch_invoice.FieldByName('合计金额')).DisplayFormat:='#,##0.00;-#,##0.00'; ADOQuery1.open; ADOQuery2.open; ADOQuery3.open; ADOQuery4.open; t_ch_invoice_invno.Open; //是否具有与银行流水匹配的权限 m_bankflowRight:=if_open('418'); //qry_feename.Open; frm_data_share.t_crm_client_all.Requery(); qry_getPath.Close; qry_getPath.Open; KPpath:= qry_getPath.fieldByName('KPpath').AsString; //KPpath:=StringReplace (KPpath, ' ', '[空格]', []); Local_SH:= Trim(frm_data_share.t_sys_company.fieldbyname('税务登记号').AsString); DZDH:= qry_getPath.fieldByName('DZDH').AsString; //是否具有与银行流水匹配的权限 m_bankflowRight:=if_open('418'); OLD_IN_ID:=''; NEW_IN_ID:=''; DBComboBoxEh3.Text:='增值税普票'; //在该文件夹内读取 // t_ch_invoice_head.open; //多业务合并处理 bsSkinPageControl1.ActivePageIndex:=0; if StrToBool(get_parameters_value(85,'false')) then begin fra_ch_add_do1.bsSkinTabSheet1.TabVisible:=False; fra_ch_add_do1.bsSkinTabSheet2.TabVisible:=False; fra_ch_add_do1.bsSkinTabSheet3.TabVisible:=False; fra_ch_add_do1.bsSkinTabSheet4.TabVisible:=False; fra_ch_add_do1.bsSkinTabSheet5.TabVisible:=True; fra_ch_add_do1.bsSkinPageControl1.TabIndex:=0; // fra_ch_add_do1.bsSkinButton11.Caption:='开出发票'; fra_ch_delete_do1.bsSkinTabSheet1.TabVisible:=false; fra_ch_delete_do1.bsSkinTabSheet2.TabVisible:=false; fra_ch_delete_do1.bsSkinTabSheet3.TabVisible:=false; fra_ch_delete_do1.bsSkinTabSheet4.TabVisible:=false; fra_ch_delete_do1.bsSkinTabSheet5.TabVisible:=True; fra_ch_delete_do1.bsSkinPageControl1.ActivePage:=fra_ch_delete_do1.bsSkinTabSheet5; end else begin fra_ch_add_do1.bsSkinTabSheet1.TabVisible:=True; fra_ch_add_do1.bsSkinTabSheet2.TabVisible:=True; fra_ch_add_do1.bsSkinTabSheet3.TabVisible:=True; fra_ch_add_do1.bsSkinTabSheet4.TabVisible:=True; fra_ch_add_do1.bsSkinPageControl1.ActivePage:=fra_ch_add_do1.bsSkinTabSheet1; fra_ch_add_do1.bsSkinTabSheet5.TabVisible:=False; fra_ch_delete_do1.bsSkinTabSheet1.TabVisible:=True; fra_ch_delete_do1.bsSkinTabSheet2.TabVisible:=True; fra_ch_delete_do1.bsSkinTabSheet3.TabVisible:=True; fra_ch_delete_do1.bsSkinTabSheet4.TabVisible:=True; fra_ch_delete_do1.bsSkinTabSheet5.TabVisible:=false; fra_ch_delete_do1.bsSkinPageControl1.ActivePage:=fra_ch_delete_do1.bsSkinTabSheet1; end; fra_ch_add_do1.do_ban1.DataSet:=t_ch_invoice; fra_ch_add_do1.bs_text.text:='1'; fra_ch_add_do1.wwDBComboBox31.text:='收'; fra_ch_add_do1.t_ch_fee_do.open; fra_ch_add_do1.bsSkinCheckRadioBox4.Checked:=False; fra_ch_add_do1.bsSkinPanel9.Visible:=true; fra_ch_delete_do1.bs_text.Text:='1'; fra_ch_delete_do1.do_ban1.DataSet:=t_ch_invoice; readcustomer;//读取客户编码 readfeename; loadreggrid(dxdbgrid1,false,caption+'1'); loadreggrid(dxdbgrid2,false,caption+'2'); frm_data_share.t_crm_client_all.requery; frm_data_share.t_code_currency.requery; //是否注册税控接口 if not if_reg(417) then begin bsSkinButton34.Visible:=false; bsSkinButton35.Visible:=false; end; {$IFDEF FPSHENQING} {$ELSE} bsSkinTabSheet3.TabVisible:=false; {$ENDIF} setBankflowButtonState(); end; procedure Tfrm_ch_invoice.t_ch_invoiceAfterInsert(DataSet: TDataSet); begin t_ch_invoice['制单人']:=employee; t_ch_invoice['开票日期']:=date; t_ch_invoice['合计金额']:=0; t_ch_invoice['实际金额']:=0; t_ch_invoice['虚开金额']:=0; t_ch_invoice['自动']:=1; t_ch_invoice['工商登记号']:=Trim(frm_data_share.t_sys_company.fieldbyname('工商登记号').AsString); t_ch_invoice['税务登记号']:=Trim(frm_data_share.t_sys_company.fieldbyname('税务登记号').AsString); t_ch_invoice['复核状态']:=0; t_ch_invoice['是否打印']:=0; t_ch_invoice['是否废除']:=0; t_ch_invoice['是否打印银行帐号名称']:=1; { if t_ch_invoice['发票类别']<>'明细发票' then t_ch_invoice['费用列表']:='代理海运费'; } end; procedure Tfrm_ch_invoice.bsSkinButton4Click(Sender: TObject); begin if t_ch_invoice.state in [dsedit,dsinsert] then t_ch_invoice.post; if strtobool(get_parameters_value(5,'FALSE'))then begin try frm_ch_invoice_add:=tfrm_ch_invoice_add.Create (self); frm_ch_invoice_add.bsSkinCheckRadioBox1.enabled:=false; frm_ch_invoice_add.bsSkinCheckRadioBox2.Visible:=false; frm_ch_invoice_add.wwDBLookupCombo6.Text:='RMB'; frm_ch_invoice_add.bsSkinCheckRadioBox7.Checked:=True; if t_ch_invoice.IsEmpty then frm_ch_invoice_add.bsSkinCheckRadioBox8.enabled:=false; frm_ch_invoice_add.ShowModal; finally frm_ch_invoice_add.Free; end; end else begin showmessage('对不起不能开具自由发票!!'); end; end; procedure Tfrm_ch_invoice.bsSkinButton11Click(Sender: TObject); begin table_post(t_ch_invoice); end; procedure Tfrm_ch_invoice.bsSkinButton13Click(Sender: TObject); begin table_cancel(t_ch_invoice); end; procedure Tfrm_ch_invoice.t_ch_invoiceBeforeInsert(DataSet: TDataSet); begin if not modify_all then abort; end; procedure Tfrm_ch_invoice.t_ch_invoiceBeforePost(DataSet: TDataSet); var currency_chi:String; total_money:Double; aAdoQuery:TAdoQuery; USDAMT,RMBAMT:Double; begin t_ch_invoice['实际金额']:=s_w(StrToInt(apointnum),t_ch_invoice['实际金额']); if (t_ch_invoice.state=dsinsert) and (t_ch_invoice.FieldByName('申请编号').asstring='') then t_ch_invoice['申请编号']:=get_no(date,'IA'); if (frm_ch_invoice.t_ch_invoice.fieldbyname('发票类别').asstring<>'申请发票') and (shiji<>t_ch_invoice.FieldByName('实际金额').value) then t_ch_invoice['合计金额']:=t_ch_invoice['实际金额']; total_money:=Abs(t_ch_invoice['合计金额']); if t_ch_invoice['币别']='RMB' then currency_chi:='';//人民币 if t_ch_invoice['币别']='USD' then currency_chi:=''; //美元 if t_ch_invoice['合计金额']<0 then begin t_ch_invoice['金额大写']:=invoice_max(total_money,currency_chi+'(付)'); end else t_ch_invoice['金额大写']:=invoice_max(t_ch_invoice['合计金额'],currency_chi); if (t_ch_invoice.FieldByName('推送邮箱').AsString='') then begin if frm_data_share.t_crm_client_all.Locate('客户简称',trim(t_ch_invoice.FieldByName('客户名称').AsString),[]) then begin t_ch_invoice.FieldByName('推送邮箱').AsString:=frm_data_share.t_crm_client_all.FieldByName('接收发票邮箱').AsString; end; end; { IF t_ch_invoice.FieldByName('发票类别').asstring='自由发票'then begin t_ch_invoice['实际金额']:=0; end; } t_ch_invoice['虚开金额']:=t_ch_invoice['合计金额']-t_ch_invoice['实际金额']; //table_before_post(t_ch_invoice,'发票号码'); // table_before_post(t_ch_invoice,'客户名称'); table_before_post(t_ch_invoice,'币别'); USDAMT:=0; RMBAMT:=0; aAdoQuery:=CreateAdoQuery; with aAdoQuery do try Close;SQL.Clear; sql.Add('select '); sql.Add('sum(case when 币别=''RMB'' then 原始金额 else 0 end) as RMBAMT'); sql.Add(',sum(case when 币别<>''RMB'' then 原始金额 else 0 end) as USDAMT'); sql.Add('From t_ch_fee_do'); sql.Add('where 工作编号=:bsno'); Parameters.ParamByName('bsno').Value:=t_ch_invoice.FieldByName('申请编号').Value; open;First; if not IsEmpty then begin USDAMT:=USDAMT+FieldByName('USDAMT').AsFloat; RMBAMT:=RMBAMT+FieldByName('RMBAMT').AsFloat; end; t_ch_invoice.FieldByName('人民币金额').AsFloat:=RMBAMT; t_ch_invoice.FieldByName('美元金额').AsFloat:=USDAMT; if (RMBAMT=0) and (USDAMT<>0) and (edt_from.text='') and (t_ch_invoice.FieldByName('备注').AsString='') THEN begin t_ch_invoice['币别']:='USD'; t_ch_invoice['费用列表']:='代理海运费'; t_ch_invoice['备注']:='USD'+floattostr(USDAMT)+'*'+floattostr(GetUsdExrate(t_ch_invoice.FieldByName('开票日期').AsString))+' 此票限付美元'; end;// else t_ch_invoice['币别']:='RMB'; finally Free; end; end; procedure Tfrm_ch_invoice.bsSkinButton18Click(Sender: TObject); begin bsSkinTabSheet1.Show; end; procedure Tfrm_ch_invoice.bsSkinButton1Click(Sender: TObject); begin bsSkinTabSheet2.Show; if StrToBool(get_parameters_value(85,'false')) then begin bsSkinTabSheet8.TabVisible:=false; bsSkinTabSheet9.TabVisible:=false; bsSkinTabSheet10.TabVisible:=false; bsSkinTabSheet12.TabVisible:=false; bsSkinTabSheet13.TabVisible:=true; v_fee_do_bscard.Close; v_fee_do_bscard.DataSource:=t_ch_invoice1; v_fee_do_bscard.Open; ADOQuery1.Close; ADOQuery2.Close; ADOQuery3.Close; ADOQuery4.Close; end else begin bsSkinTabSheet8.TabVisible:=true; bsSkinTabSheet9.TabVisible:=true; bsSkinTabSheet10.TabVisible:=true; bsSkinTabSheet12.TabVisible:=true; bsSkinTabSheet13.TabVisible:=false; ADOQuery1.open; ADOQuery2.open; ADOQuery3.open; ADOQuery4.open; v_fee_do_bscard.Close; end; end; procedure Tfrm_ch_invoice.bsSkinButton9Click(Sender: TObject); var Pnt:Tpoint; begin Pnt:=bsSkinButton9.ClientToScreen(Point(0,bsSkinButton9.Height)); PopupMenu2.Popup(Pnt.x,Pnt.y); end; procedure Tfrm_ch_invoice.bsSkinButton16Click(Sender: TObject); var Pnt:Tpoint; begin Pnt:=bsSkinButton16.ClientToScreen(Point(0,bsSkinButton16.Height)); PopupMenu2.Popup(Pnt.x,Pnt.y); end; procedure Tfrm_ch_invoice.N1Click(Sender: TObject); begin if t_ch_invoice.IsEmpty then exit; if t_ch_invoice.FieldByName('是否废除').asboolean then begin showmessage('发票已经废除,不能打印!!'); exit; end; if Trim(t_ch_invoice.FieldByName('发票抬头').AsString)='' then begin showmessage('发票抬头为空,不能打印!!'); exit; end; if t_ch_invoice.state in [dsedit,dsinsert] then t_ch_invoice.post; if not t_ch_invoice.FieldByName('是否打印').asboolean then begin t_ch_invoice.Edit; t_ch_invoice['是否打印']:=1; t_ch_invoice.post; end; sys_print('业务发票打印',1,t_ch_invoice1,nil,nil,nil,DataSource1,DataSource2,DataSource3,DataSource4,t_ch_invoice1,nil,nil); end; procedure Tfrm_ch_invoice.N20Click(Sender: TObject); begin if t_ch_invoice.IsEmpty then exit; if t_ch_invoice.FieldByName('是否废除').asboolean then begin showmessage('发票已经废除,不能打印!!'); exit; end; if Trim(t_ch_invoice.FieldByName('发票抬头').AsString)='' then begin showmessage('发票抬头为空,不能打印!!'); exit; end; if t_ch_invoice.state in [dsedit,dsinsert] then t_ch_invoice.post; if not t_ch_invoice.FieldByName('是否打印').asboolean then begin t_ch_invoice.Edit; t_ch_invoice['是否打印']:=1; t_ch_invoice.post; end; sys_print('业务发票打印',2,t_ch_invoice1,nil,nil,nil,DataSource1,DataSource2,DataSource3,DataSource4,t_ch_invoice1,nil,nil); end; procedure Tfrm_ch_invoice.t_ch_invoiceBeforeEdit(DataSet: TDataSet); begin if not modify_all then begin if t_ch_invoice.FieldByName('是否废除').asboolean then begin showmessage('发票已经废除,不能修改!!'); abort; end; if t_ch_invoice.FieldByName('是否打印').asboolean then begin showmessage('发票已经打印,不能修改!!'); abort; end; end; shiji:=t_ch_invoice.fieldbyname('实际金额').asfloat; end; procedure Tfrm_ch_invoice.RxDBLookupCombo2Change(Sender: TObject); begin try // if (t_ch_invoice.state=dsinsert) or (t_ch_invoice.state=dsedit) then // begin if not t_sys_bank.IsEmpty then if t_sys_bank.Locate('代码',RxDBLookupCombo2.DisplayValues[0],[])then begin t_ch_invoice.Edit; t_ch_invoice['开户银行']:=t_sys_bank.fieldbyname('银行名称').asstring; t_ch_invoice['银行账号']:=t_sys_bank.fieldbyname('银行账号').asstring; end; // end; except ; end; end; procedure Tfrm_ch_invoice.DM_MoneyChange(Sender: TObject); VAR total_money:real; currency_chi:string; begin try if (t_ch_invoice.state=dsinsert) or (t_ch_invoice.state=dsedit) then begin if frm_data_share.t_code_currency.Locate('币别',wwDBLookupCombo6.text,[])then // currency_chi:=frm_data_share.t_code_currency.fieldbyname('中文名').asstring; total_money:=total_num(DM_Money); t_ch_invoice['合计金额']:=total_money; if total_money<0 then begin total_money:=Abs(total_money); t_ch_invoice['金额大写']:=invoice_max(total_money,'负'+currency_chi); end else t_ch_invoice['金额大写']:=invoice_max(total_money,currency_chi); end; except ; end; end; procedure Tfrm_ch_invoice.DM_MoneyExit(Sender: TObject); begin if (t_ch_invoice.State=dsedit)or(t_ch_invoice.State=dsinsert)then begin add_zero(DM_Money); t_ch_invoice['金额列表']:=DM_Money.text; end; end; procedure Tfrm_ch_invoice.DBSumLowerChange(Sender: TObject); VAR total_money:real; currency_chi:string; begin try if (t_ch_invoice.state=dsinsert) or (t_ch_invoice.state=dsedit) then begin if frm_data_share.t_code_currency.Locate('币别',wwDBLookupCombo6.text,[])then currency_chi:=frm_data_share.t_code_currency.fieldbyname('中文名').asstring; total_money:=strtofloat(DBSumLower.text); if total_money<0 then begin total_money:=Abs(total_money); t_ch_invoice['金额大写']:=invoice_max(total_money,currency_chi+'(付)'); end else t_ch_invoice['金额大写']:=invoice_max(total_money,currency_chi); end; except ; end; end; procedure Tfrm_ch_invoice.bsSkinButton17Click(Sender: TObject); begin if t_ch_invoice.IsEmpty then exit; if not if_open('031') then begin showmessage('对不起你没有此模块的操作权限!'); exit; end; if t_ch_invoice.FieldByName('是否废除').asboolean then begin showmessage('发票已经废除,不能取消打印!!'); exit; end; if t_ch_invoice.FieldByName('是否打印').asboolean then begin if application.MessageBox('您确定要取消打印吗?','警告:',MB_OKCANCEL)=IDOK then begin try modify_all:=true; t_ch_invoice.Edit; t_ch_invoice['是否打印']:=0; t_ch_invoice.post; finally modify_all:=false; end; end; end; end; procedure Tfrm_ch_invoice.bsSkinButton12Click(Sender: TObject); var str:widestring; if_shen:string; in_id:integer; aQuery:TADOQuery; begin //删除发票处理,已打印只能废除,不能删除 if t_ch_invoice.IsEmpty then exit; if t_ch_invoice.FieldByName('是否废除').asboolean then begin if if_open('309') then begin modify_all:=true; t_ch_invoice.Edit; t_ch_invoice['是否废除']:=0; t_ch_invoice['废除原因']:=''; t_ch_invoice['废除人']:=''; t_ch_invoice['废除日期']:=null; t_ch_invoice['申请编号']:=''; t_ch_invoice.post; modify_all:=false; end else begin showmessage('对不起,你没有撤销废除的权限!!'); end; exit; end; if_shen:=t_ch_invoice.fieldbyname('发票类别').asstring; if t_ch_invoice.FieldByName('是否打印').asboolean then begin str:=trim(InputBox('请输入废除原因', '废除原因:', '')); if str=''then begin showmessage('废除原因不能为空,废除失败!!'); exit; end else if str=''then begin exit; end; in_id:=t_ch_invoice.FieldByName('IN_ID').asinteger; t_ch_invoice.Refresh; if not t_ch_invoice.locate('IN_ID',in_id,[]) then exit; try if t_ch_invoice.FieldByName('发票类别').AsString<>'申请发票' then begin aQuery:=CreateAdoQuery; try with aQuery do begin Close;SQL.Clear; SQL.Add('select * from t_ch_fee_do where 类型=''1'' and 工作编号='''+t_ch_invoice.FieldByName('申请编号').AsString+''''); Open; first; while not eof do begin Delete; end; end; finally FreeAndNil(aQuery); end; end else begin aQuery:=CreateAdoQuery; try with aQuery do begin Close;SQL.Clear; SQL.Add('select * from t_ch_fee_do where 类型=''1'' and 工作编号='''+t_ch_invoice.FieldByName('申请编号').AsString+''''); Open; first; while not eof do begin edit; fieldbyname('类型').AsString:='7'; post; next; end; end; finally FreeAndNil(aQuery); end; end; //执行税控机废除动作 modify_all:=true; t_ch_invoice.Edit; t_ch_invoice['是否废除']:=1; t_ch_invoice['废除原因']:=str; t_ch_invoice['废除人']:=employee; t_ch_invoice['废除日期']:=now; t_ch_invoice['申请编号']:=''; t_ch_invoice.post; modify_all:=false; except modify_all:=false; showmessage('废除失败!!'); exit; end; end else begin if application.MessageBox('您确定要删除数据吗?','警告:',MB_OKCANCEL)=IDOK then begin if t_ch_invoice.FieldByName('发票类别').AsString<>'申请发票' then begin aQuery:=CreateAdoQuery; try with aQuery do begin Close;SQL.Clear; SQL.Add('select * from t_ch_fee_do where 类型=''1'' and 工作编号='''+t_ch_invoice.FieldByName('申请编号').AsString+''''); Open; first; while not eof do begin Delete; end; end; finally FreeAndNil(aQuery); end; end else begin aQuery:=CreateAdoQuery; try with aQuery do begin Close;SQL.Clear; SQL.Add('select * from t_ch_fee_do where 类型=''1'' and 工作编号='''+t_ch_invoice.FieldByName('申请编号').AsString+''''); Open; first; while not eof do begin edit; fieldbyname('类型').AsString:='7'; post; next; end; end; finally FreeAndNil(aQuery); end; end; t_ch_invoice.delete; end else exit; end; if if_shen<>'自由发票'then begin t_ch_invoice_shen.requery; end; end; procedure Tfrm_ch_invoice.bsSkinButton23Click(Sender: TObject); begin sys_print('业务发票申请',2,t_ch_invoice_shen1,nil,nil,nil,v_fee_do_seae1,v_fee_do_seai1,v_fee_do_aire1,v_fee_do_airi1,t_ch_invoice_shen1,nil,nil); end; procedure Tfrm_ch_invoice.bsSkinButton28Click(Sender: TObject); begin table_Prior(t_ch_invoice_shen); end; procedure Tfrm_ch_invoice.bsSkinButton29Click(Sender: TObject); begin table_next(t_ch_invoice_shen); end; procedure Tfrm_ch_invoice.bsSkinButton30Click(Sender: TObject); begin if bsSkinButton30.Caption='详细内容' then begin if t_ch_invoice_shen.IsEmpty then exit; bsSkinTabSheet22.show; bsSkinButton30.Caption:='返回列表'; end else begin bsSkinTabSheet11.show; bsSkinButton30.Caption:='详细内容'; end; if StrToBool(get_parameters_value(85,'false')) then begin bsSkinTabSheet4.TabVisible:=false; bsSkinTabSheet5.TabVisible:=false; bsSkinTabSheet6.TabVisible:=false; bsSkinTabSheet7.TabVisible:=false; bsSkinTabSheet14.TabVisible:=true; v_fee_do_bscard.Close; v_fee_do_bscard.DataSource:=t_ch_invoice_shen1; v_fee_do_bscard.Open; v_fee_do_seae.Close; v_fee_do_seai.Close; v_fee_do_aire.Close; v_fee_do_airi.Close; end else begin bsSkinTabSheet4.TabVisible:=true; bsSkinTabSheet5.TabVisible:=true; bsSkinTabSheet6.TabVisible:=true; bsSkinTabSheet7.TabVisible:=true; bsSkinTabSheet14.TabVisible:=false; v_fee_do_seae.open; v_fee_do_seai.open; v_fee_do_aire.open; v_fee_do_airi.open; v_fee_do_bscard.Close; end; end; procedure Tfrm_ch_invoice.bsSkinButton26Click(Sender: TObject); begin if t_ch_invoice_shen.IsEmpty then exit; if (t_ch_invoice_shen.FieldByName('申请类别').asstring='实际开票')then begin shen_back(t_ch_invoice_shen); end else begin if (t_ch_invoice_shen.FieldByName('申请状态').asstring='提交申请')or (t_ch_invoice_shen.FieldByName('申请状态').asstring='开出发票')or (t_ch_invoice_shen.FieldByName('申请状态').asstring='批准开票')or (t_ch_invoice_shen.FieldByName('申请状态').asstring='禁止修改')then begin t_ch_invoice_shen.Edit; t_ch_invoice_shen['申请状态']:='驳回申请'; t_ch_invoice_shen['审核人']:=employee; t_ch_invoice_shen['审核日期']:=now; t_ch_invoice_shen.post; t_ch_invoice_shen.Refresh; end else begin showmessage('当前业务状态不能驳回申请!!'); end; end; end; procedure Tfrm_ch_invoice.bsSkinButton25Click(Sender: TObject); begin if t_ch_invoice_shen.IsEmpty then exit; if (t_ch_invoice_shen.FieldByName('申请类别').asstring<>'实际开票')then begin if (t_ch_invoice_shen.FieldByName('申请状态').asstring='提交申请')or (t_ch_invoice_shen.FieldByName('申请状态').asstring='驳回申请')or (t_ch_invoice_shen.FieldByName('申请状态').asstring='批准开票')or (t_ch_invoice_shen.FieldByName('申请状态').asstring='禁止修改')then begin t_ch_invoice_shen.Edit; t_ch_invoice_shen['申请状态']:='开出发票'; t_ch_invoice_shen['审核人']:=employee; t_ch_invoice_shen['审核日期']:=now; t_ch_invoice_shen.post; t_ch_invoice_shen.Refresh; end else begin showmessage('当前业务状态不能批准开出发票!!'); end; end else begin if strtobool(get_parameters_value(1,'false')) then begin if (t_ch_invoice_shen.FieldByName('申请状态').asstring<>'批准开票') and (t_ch_invoice_shen.FieldByName('申请状态').asstring<>'禁止修改') then begin showmessage('当前申请状态不能开出发票!!'); exit; end; end else begin if (t_ch_invoice_shen.FieldByName('申请状态').asstring<>'批准开票') and (t_ch_invoice_shen.FieldByName('申请状态').asstring<>'禁止修改') and (t_ch_invoice_shen.FieldByName('申请状态').asstring<>'提交申请') then begin showmessage('当前申请状态不能开出发票!!'); exit; end; end; try frm_ch_invoice_add:=tfrm_ch_invoice_add.Create (self); frm_ch_invoice_add.bsSkinCheckRadioBox1.checked:=true; frm_ch_invoice_add.bsSkinCheckRadioBox7.enabled:=false; frm_ch_invoice_add.bsSkinCheckRadioBox8.enabled:=false; frm_ch_invoice_add.wwDBLookupCombo6.Text:=t_ch_invoice_shen.fieldbyname('币别').asstring; frm_ch_invoice_add.wwDBLookupCombo6.ReadOnly:=true; frm_ch_invoice_add.edit2.text:=t_ch_invoice_shen.fieldbyname('客户名称').asstring; frm_ch_invoice_add.edit2.Visible:=true; frm_ch_invoice_add.RxDBLookupCombo3.Visible:=false; if t_ch_invoice_shen.FieldByName('开船日期').asstring<>''then begin { if (date-t_ch_invoice_shen.FieldByName('开船日期').asdatetime)>7 then begin showmessage('警告:发票开船日期超过了税务局要求的7天限制!!'); end; } end; frm_ch_invoice_add.ShowModal; finally frm_ch_invoice_add.Free; end; end; end; procedure Tfrm_ch_invoice.RxDBLookupCombo3Enter(Sender: TObject); begin if DBEdit12.text='申请发票' then begin RxDBLookupCombo3.ReadOnly:=true; {DBEdit19.ReadOnly:=true; DE_ShipName.ReadOnly:=true; DE_BLNO.ReadOnly:=true; wwDBDateTimePicker2.ReadOnly:=true; wwDBLookupCombo10.ReadOnly:=true; wwDBLookupCombo11.ReadOnly:=true; wwDBLookupCombo12.ReadOnly:=true; DM_ChaCon.ReadOnly:=true; DM_CostType.ReadOnly:=true; DM_Money.ReadOnly:=true; DE_SumUpper.ReadOnly:=true; DBSumLower.ReadOnly:=true; } wwDBLookupCombo6.ReadOnly:=true; end else begin RxDBLookupCombo3.ReadOnly:=false; {DBEdit19.ReadOnly:=false; DE_ShipName.ReadOnly:=false; DE_BLNO.ReadOnly:=false; wwDBDateTimePicker2.ReadOnly:=false; wwDBLookupCombo10.ReadOnly:=false; wwDBLookupCombo11.ReadOnly:=false; wwDBLookupCombo12.ReadOnly:=false; DM_ChaCon.ReadOnly:=false; DM_CostType.ReadOnly:=false; DM_Money.ReadOnly:=false; DE_SumUpper.ReadOnly:=false; DBSumLower.ReadOnly:=false; } wwDBLookupCombo6.ReadOnly:=false; end; end; procedure Tfrm_ch_invoice.FormCloseQuery(Sender: TObject; var CanClose: Boolean); begin CanClose:=frm_close_query(t_ch_invoice); end; procedure Tfrm_ch_invoice.bsSkinButton24Click(Sender: TObject); begin try frm_ch_shen_query:=tfrm_ch_shen_query.Create (self); shen_query_type:=3; shen_query_limited:='no'; shen_query_op_limited:='no'; frm_ch_shen_query.ShowModal; finally frm_ch_shen_query.Free; end; end; procedure Tfrm_ch_invoice.bsSkinButton3Click(Sender: TObject); begin if t_ch_invoice.IsEmpty then exit; if t_ch_invoice.FieldByName('发票类别').asstring<>'申请发票'then begin showmessage('当前发票不是申请发票!!'); exit; end; if t_ch_invoice.FieldByName('是否废除').asboolean then begin showmessage('当前发票已经废除!!'); exit; end; if not t_ch_invoice_shen.Locate('申请编号',t_ch_invoice.fieldbyname('申请编号').asstring,[])then begin t_ch_invoice_shen.close; t_ch_invoice_shen.sql.clear; t_ch_invoice_shen.sql.add('select * from t_ch_invoice_shen where 申请编号=' +''''+t_ch_invoice.fieldbyname('申请编号').asstring+''''); t_ch_invoice_shen.open; end; bsSkinTabSheet22.Show; end; procedure Tfrm_ch_invoice.bsSkinButton31Click(Sender: TObject); begin if t_ch_invoice_shen.IsEmpty then exit; if t_ch_invoice_shen.FieldByName('申请状态').asstring<>'开出发票'then begin showmessage('当前申请还没有开出发票!!'); exit; end; if not t_ch_invoice.Locate('发票号码',t_ch_invoice_shen.fieldbyname('发票号码').asstring,[])then begin t_ch_invoice.close; t_ch_invoice.sql.clear; t_ch_invoice.sql.add('select * from t_ch_invoice where 发票号码=' +''''+t_ch_invoice_shen.fieldbyname('发票号码').asstring+''''); t_ch_invoice.open; end; if not t_ch_invoice.IsEmpty then bsSkinTabSheet2.Show else showmessage('没有找到相应的发票信息!!'); end; procedure Tfrm_ch_invoice.N3Click(Sender: TObject); begin if t_ch_invoice.IsEmpty then exit; if t_ch_invoice.FieldByName('是否废除').asboolean then begin showmessage('发票已经废除,不能打印!!'); exit; end; if Trim(t_ch_invoice.FieldByName('发票抬头').AsString)='' then begin showmessage('发票抬头为空,不能打印!!'); exit; end; if t_ch_invoice.state in [dsedit,dsinsert] then t_ch_invoice.post; if not t_ch_invoice.FieldByName('是否打印').asboolean then begin t_ch_invoice.Edit; t_ch_invoice['是否打印']:=1; t_ch_invoice.post; end; sys_print('业务发票打印',3,t_ch_invoice1,nil,nil,nil,DataSource1,DataSource2,DataSource3,DataSource4,t_ch_invoice1,nil,nil); if t_ch_invoice.state in [dsedit,dsinsert] then t_ch_invoice.post; if MessageDlg('继续添加发票吗?',mtWarning,[mbyes,mbno],0)=mryes then bsSkinButton4Click(sender); end; procedure Tfrm_ch_invoice.DBEdit12KeyPress(Sender: TObject; var Key: Char); begin key_DBEdit(Key,DBEdit16); end; procedure Tfrm_ch_invoice.DBEdit16KeyPress(Sender: TObject; var Key: Char); begin key_DBEdit(Key,DBEdit17); end; procedure Tfrm_ch_invoice.DBEdit17KeyPress(Sender: TObject; var Key: Char); begin key_DBEdit(Key,DBEdit18); end; procedure Tfrm_ch_invoice.DBEdit18KeyPress(Sender: TObject; var Key: Char); begin key_RxDBLookupCombo(Key,RxDBLookupCombo3); end; procedure Tfrm_ch_invoice.RxDBLookupCombo3KeyPress(Sender: TObject; var Key: Char); begin key_RxDBLookupCombo(Key,RxDBLookupCombo2); end; procedure Tfrm_ch_invoice.RxDBLookupCombo2KeyPress(Sender: TObject; var Key: Char); begin key_DBEdit(Key,DBEdit27); end; procedure Tfrm_ch_invoice.DE_ShipNameKeyPress(Sender: TObject; var Key: Char); begin key_DBEdit(Key,DE_BLNO); end; procedure Tfrm_ch_invoice.DE_BLNOKeyPress(Sender: TObject; var Key: Char); begin key_wwDBDateTimePicker(Key,wwDBDateTimePicker2); end; procedure Tfrm_ch_invoice.wwDBDateTimePicker2KeyPress(Sender: TObject; var Key: Char); begin key_wwDBLookupCombo(Key,wwDBLookupCombo10); end; procedure Tfrm_ch_invoice.wwDBLookupCombo10KeyPress(Sender: TObject; var Key: Char); begin key_wwDBLookupCombo(Key,wwDBLookupCombo11); end; procedure Tfrm_ch_invoice.wwDBLookupCombo11KeyPress(Sender: TObject; var Key: Char); begin key_wwDBLookupCombo(Key,wwDBLookupCombo12); end; procedure Tfrm_ch_invoice.wwDBLookupCombo12KeyPress(Sender: TObject; var Key: Char); begin key_DBMemo(Key,DM_ChaCon); end; procedure Tfrm_ch_invoice.DE_SumUpperKeyPress(Sender: TObject; var Key: Char); begin key_DBEdit(Key,DBSumLower); end; procedure Tfrm_ch_invoice.DBSumLowerKeyPress(Sender: TObject; var Key: Char); begin key_wwDBLookupCombo(Key,wwDBLookupCombo6); end; procedure Tfrm_ch_invoice.wwDBLookupCombo6KeyPress(Sender: TObject; var Key: Char); begin key_DBEdit(Key,DE_BusnessNo); end; procedure Tfrm_ch_invoice.DE_BusnessNoKeyPress(Sender: TObject; var Key: Char); begin key_DBEdit(Key,DE_TaxNo); end; procedure Tfrm_ch_invoice.DE_TaxNoKeyPress(Sender: TObject; var Key: Char); begin key_DBEdit(Key,DE_Maker); end; procedure Tfrm_ch_invoice.DE_MakerKeyPress(Sender: TObject; var Key: Char); begin key_wwDBLookupCombo(Key,wwDBLookupCombo7); end; procedure Tfrm_ch_invoice.RxDBLookupCombo3Change(Sender: TObject); begin if t_ch_invoice.fieldbyname('发票类别').asstring='自由发票'then begin if (t_ch_invoice.state=dsinsert)or(t_ch_invoice.state=dsedit)then begin if not frm_data_share.t_crm_client_all.IsEmpty then if frm_data_share.t_crm_client_all.locate('客户简称',RxDBLookupCombo3.DisplayValues[1],[]) then begin if frm_data_share.t_crm_client_all.fieldbyname('发票抬头').asstring<>'' then t_ch_invoice['发票抬头']:=frm_data_share.t_crm_client_all.fieldbyname('发票抬头').asstring else t_ch_invoice['发票抬头']:=frm_data_share.t_crm_client_all.fieldbyname('客户全称').asstring; end; end; end; end; procedure Tfrm_ch_invoice.bsSkinButton10Click(Sender: TObject); begin try frm_ch_invoice_query:=tfrm_ch_invoice_query.Create (self); frm_ch_invoice_query.ShowModal; finally frm_ch_invoice_query.Free; end; end; procedure Tfrm_ch_invoice.N10Click(Sender: TObject); begin if bsSkinTabSheet1.Showing then update_grid_view_no(dxdbgrid1) else update_grid_view_no(dxdbgrid2); end; procedure Tfrm_ch_invoice.N14Click(Sender: TObject); begin if bsSkinTabSheet1.Showing then update_grid_view_all(dxdbgrid1) else update_grid_view_all(dxdbgrid2); end; procedure Tfrm_ch_invoice.N12Click(Sender: TObject); begin if bsSkinTabSheet1.Showing then update_grid(dxdbgrid1,7) else update_grid(dxdbgrid2,8); end; procedure Tfrm_ch_invoice.N16Click(Sender: TObject); begin if bsSkinTabSheet1.Showing then grid_save_xls(dxdbgrid1) else grid_save_xls(dxdbgrid2); end; procedure Tfrm_ch_invoice.dxDBGrid1ColumnSorting(Sender: TObject; Column: TdxDBTreeListColumn; var Allow: Boolean); begin Column_sort(Column,t_ch_invoice,'发票号码'); end; procedure Tfrm_ch_invoice.dxDBGrid2ColumnSorting(Sender: TObject; Column: TdxDBTreeListColumn; var Allow: Boolean); begin Column_sort(Column,t_ch_invoice_shen,'申请编号'); end; procedure Tfrm_ch_invoice.bsSkinButton22Click(Sender: TObject); begin shen_modify_ok(t_ch_invoice_shen); end; procedure Tfrm_ch_invoice.bsSkinButton27Click(Sender: TObject); begin shen_modify_back(t_ch_invoice_shen); end; procedure Tfrm_ch_invoice.bsSkinButton32Click(Sender: TObject); var Pnt:Tpoint; begin Pnt:=bsSkinButton32.ClientToScreen(Point(0,bsSkinButton32.Height)); PopupMenu3.Popup(Pnt.x,Pnt.y); end; procedure Tfrm_ch_invoice.N17Click(Sender: TObject); begin t_ch_invoice_shen.Close; t_ch_invoice_shen.SQL.clear; t_ch_invoice_shen.SQL.Add('select * from t_ch_invoice_shen where 申请状态 in ('+''''+'申请开票'+'''' +') ' +'order by 申请编号 desc'); t_ch_invoice_shen.open; end; procedure Tfrm_ch_invoice.N34Click(Sender: TObject); begin t_ch_invoice_shen.Close; t_ch_invoice_shen.SQL.clear; t_ch_invoice_shen.SQL.Add('select * from t_ch_invoice_shen where 申请状态 in ('+''''+'驳回申请'+'''' +','+''''+'禁止修改'+''''+') ' +'order by 申请编号 desc'); t_ch_invoice_shen.open; end; procedure Tfrm_ch_invoice.N36Click(Sender: TObject); begin t_ch_invoice_shen.Close; t_ch_invoice_shen.SQL.clear; t_ch_invoice_shen.SQL.Add('select * from t_ch_invoice_shen where 申请状态 in (' +''''+'提交申请'+''''+','+''''+'申请修改'+''''+') ' +'order by 申请编号 desc'); t_ch_invoice_shen.open; end; procedure Tfrm_ch_invoice.N6Click(Sender: TObject); begin t_ch_invoice_shen.Close; t_ch_invoice_shen.SQL.clear; t_ch_invoice_shen.SQL.Add('select * from t_ch_invoice_shen where 申请状态 in ('+''''+'批准开票'+'''' +','+''''+'禁止修改'+''''+') ' +'order by 申请编号 desc'); t_ch_invoice_shen.open; end; procedure Tfrm_ch_invoice.MenuItem2Click(Sender: TObject); begin t_ch_invoice_shen.Close; t_ch_invoice_shen.SQL.clear; t_ch_invoice_shen.SQL.Add('select * from t_ch_invoice_shen where 申请状态 in ('+''''+'开出发票'+''''+') ' +'order by 申请编号 desc'); t_ch_invoice_shen.open; end; procedure Tfrm_ch_invoice.dxDBGridMaskColumn2CustomDraw(Sender: TObject; ACanvas: TCanvas; ARect: TRect; ANode: TdxTreeListNode; AColumn: TdxDBTreeListColumn; const AText: String; AFont: TFont; var AColor: TColor; ASelected, AFocused: Boolean; var ADone: Boolean); begin if (ANode.strings[dxDBGridMaskColumn2.Index]='申请开票')or (ANode.strings[dxDBGridMaskColumn2.Index]='批准修改') then AColor :=clwhite else if (ANode.strings[dxDBGridMaskColumn2.Index]='提交申请')or (ANode.strings[dxDBGridMaskColumn2.Index]='申请修改') then AColor :=clyellow else if (ANode.strings[dxDBGridMaskColumn2.Index]='禁止修改')or (ANode.strings[dxDBGridMaskColumn2.Index]='驳回申请')then AColor :=clred else if (ANode.strings[dxDBGridMaskColumn2.Index]='批准开票')or (ANode.strings[dxDBGridMaskColumn2.Index]='开出发票') then AColor :=$00DDF21C; AFont.Color:=clblack; end; procedure Tfrm_ch_invoice.DBEdit1Change(Sender: TObject); begin if (DBEdit1.Text='') or (DBEdit1.Text='申请开票') or (DBEdit1.Text='批准修改')then DBEdit1.Color:=clwhite else if (DBEdit1.Text='提交申请') or (DBEdit1.Text='申请修改') then DBEdit1.Color:=clyellow else if (DBEdit1.Text='禁止修改') or (DBEdit1.Text='驳回申请') then DBEdit1.Color:=clred else if (DBEdit1.Text='批准开票') or (DBEdit1.Text='开出发票') then DBEdit1.Color:=$00DDF21C; end; procedure Tfrm_ch_invoice.DBEdit29KeyPress(Sender: TObject; var Key: Char); begin key_DBEdit(Key,DE_ShipName); end; procedure Tfrm_ch_invoice.wwDBDateTimePicker1KeyPress(Sender: TObject; var Key: Char); begin key_DBEdit(Key,DBEdit29); end; procedure Tfrm_ch_invoice.wwDBLookupCombo1KeyPress(Sender: TObject; var Key: Char); begin // key_wwDBDateTimePicker(Key,wwDBDateTimePicker1); end; procedure Tfrm_ch_invoice.DBEdit27KeyPress(Sender: TObject; var Key: Char); begin key_wwDBLookupCombo(Key,wwDBLookupCombo1); end; procedure Tfrm_ch_invoice.t_ch_invoiceAfterPost(DataSet: TDataSet); begin // t_ch_invoice_head.Requery(); if t_ch_invoice['发票类别']<>'申请发票' then begin if bsSkinPageControl1.ActivePage=bsSkinTabSheet3 then begin ADOQuery1.Requery; ADOQuery2.Requery; ADOQuery3.Requery; ADOQuery4.Requery; end; if StrToBool(get_parameters_value(85,'false')) then begin if (bsSkinPageControl6.ActivePage=bstab2) then begin if fra_ch_delete_do1.v_fee_do_bscard_sum.active then begin fra_ch_delete_do1.v_fee_do_bscard_sum.Requery; fra_ch_delete_do1.v_fee_do_bscard.Requery; end; end; end else begin if (bsSkinPageControl6.ActivePage=bstab2) then begin if fra_ch_delete_do1.v_fee_do_seae.active then begin fra_ch_delete_do1.v_fee_do_seae.Requery; fra_ch_delete_do1.v_fee_do_seae_sum.Requery; fra_ch_delete_do1.v_fee_do_seai.Requery; fra_ch_delete_do1.v_fee_do_seai_sum.Requery; fra_ch_delete_do1.v_fee_do_aire.Requery; fra_ch_delete_do1.v_fee_do_aire_sum.Requery; fra_ch_delete_do1.v_fee_do_airi.Requery; fra_ch_delete_do1.v_fee_do_airi_sum.Requery; end; end; end; if if_ch_delete_do then begin case delete_do_type_num of 1,2,3,4,5: begin if fra_ch_add_do1.t_op_seae.Active then begin fra_ch_add_do1.t_ch_fee.Requery(); fra_ch_add_do1.t_ch_fee_sum.Requery(); end; end; end; end; delete_do_type_num:=0; if_ch_delete_do:=false; end; end; procedure Tfrm_ch_invoice.N8Click(Sender: TObject); var aQuery:TADOQuery; begin // aQuery:=CreateAdoQuery; try modify_all:=true; t_ch_invoice.edit; t_ch_invoice['是否收费']:=1; t_ch_invoice.post; { with aQuery do begin Close;SQL.Clear; SQL.Add('Update t_ch_invoice set 是否收费=1 where IN_ID='+inttostr(t_ch_invoice.fieldbyName('IN_ID').AsInteger)); ExecSQL; end; t_ch_invoice.Refresh; } finally modify_all:=false; // FreeAndNil(aQuery); end; end; procedure Tfrm_ch_invoice.N19Click(Sender: TObject); begin // aQuery:=CreateAdoQuery; try modify_all:=true; t_ch_invoice.edit; t_ch_invoice['是否收费']:=0; t_ch_invoice.post; { with aQuery do begin Close;SQL.Clear; SQL.Add('Update t_ch_invoice set 是否收费=0 where IN_ID='+inttostr(t_ch_invoice.fieldbyName('IN_ID').AsInteger)); ExecSQL; end; t_ch_invoice.Refresh; } finally modify_all:=false; // FreeAndNil(aQuery); end; end; procedure Tfrm_ch_invoice.DBEdit12Change(Sender: TObject); begin if DBEdit12.Text<>'申请发票' then bstab2.TabVisible:=True else bstab2.TabVisible:=false; end; procedure Tfrm_ch_invoice.DE_BLNODblClick(Sender: TObject); var str:String; begin //双击主提单号添加发票明细 frmch_invoice_addone:=Tfrmch_invoice_addone.Create(Self); try with frmch_invoice_addone.ADOQuery1 do begin frmch_invoice_addone.MblNo:=true; frmch_invoice_addone.ADOQuery2.Close; frmch_invoice_addone.ADOQuery2.SQL.Clear; frmch_invoice_addone.ADOQuery2.SQL.Add('select 主提单号,委托编号,船名,航次,开船日期,起运港,卸货港,目的地 from v_op_bscard where 主提单号='''+Trim(DE_BLNO.Text)+''' or 分提单号='''+Trim(DE_BLNO.Text)+''''); frmch_invoice_addone.ADOQuery2.Open; str:=' and 金额<>(开票金额+申请开票) and 不开发票<>1 and 类型=''收'' and 编号 in (select 编号 from v_op_bscard where 主提单号='''+Trim(DE_BLNO.Text)+''' or 分提单号='''+Trim(DE_BLNO.Text)+''')'; frmch_invoice_addone.t_fee_obj.Close; frmch_invoice_addone.t_fee_obj.SQL.Clear; frmch_invoice_addone.t_fee_obj.SQL.Add('Select distinct 客户名称 from t_ch_fee where 1=1 ') ; frmch_invoice_addone.t_fee_obj.SQL.Add(str); if t_ch_invoice.FieldByName('客户名称').AsString<>'' then frmch_invoice_addone.t_fee_obj.SQL.Add(' and 客户名称='''+t_ch_invoice.FieldByName('客户名称').AsString+''''); frmch_invoice_addone.t_fee_obj.Open; Close; SQL.Clear; SQL.Add('Select * from t_ch_fee where 1=1 '); if t_ch_invoice.FieldByName('客户名称').AsString<>'' then SQL.Add(' and 客户名称='''+t_ch_invoice.FieldByName('客户名称').AsString+''''); // else // SQL.Add(' and 客户名称=:客户名称 '); SQL.Add(str); Open; if not IsEmpty then begin if t_ch_invoice.FieldByName('币别').AsString='USD' then frmch_invoice_addone.bsSkinRadioGroup1.ItemIndex:=1 else frmch_invoice_addone.bsSkinRadioGroup1.ItemIndex:=0; frmch_invoice_addone.ShowModal; end else begin MessageDlg('此主提单号下此客户无应开发票的费用',mtWarning,[mbYes],0); end; end; finally FreeAndNil(frmch_invoice_addone); end; end; procedure Tfrm_ch_invoice.DBEdit29DblClick(Sender: TObject); var str:String; begin //双击委托编号添加发票明细 frmch_invoice_addone:=Tfrmch_invoice_addone.Create(Self); try with frmch_invoice_addone.ADOQuery1 do begin frmch_invoice_addone.MblNo:=false; frmch_invoice_addone.ADOQuery2.Close; frmch_invoice_addone.ADOQuery2.SQL.Clear; frmch_invoice_addone.ADOQuery2.SQL.Add('select 主提单号,委托编号,船名,航次,开船日期,起运港,卸货港,目的地 from v_op_bscard where 委托编号='''+Trim(DBEdit29.Text)+''' or 业务编号='''+Trim(DBEdit29.Text)+''' or 分提单号='''+Trim(DBEdit29.Text)+''''); frmch_invoice_addone.ADOQuery2.Open; str:=' and 金额<>(开票金额+申请开票) and 不开发票<>1 and 类型=''收'' and 编号 in (select 编号 from v_op_bscard where 委托编号='''+Trim(DBEdit29.Text)+''' or 业务编号='''+Trim(DBEdit29.Text)+''' or 分提单号='''+Trim(DBEdit29.Text)+''')'; frmch_invoice_addone.t_fee_obj.Close; frmch_invoice_addone.t_fee_obj.SQL.Clear; frmch_invoice_addone.t_fee_obj.SQL.Add('Select distinct 客户名称 from t_ch_fee where 1=1 ') ; frmch_invoice_addone.t_fee_obj.SQL.Add(str); if t_ch_invoice.FieldByName('客户名称').AsString<>'' then frmch_invoice_addone.t_fee_obj.SQL.Add(' and 客户名称='''+t_ch_invoice.FieldByName('客户名称').AsString+''''); frmch_invoice_addone.t_fee_obj.Open; Close; SQL.Clear; SQL.Add('Select * from t_ch_fee where 1=1 '); if t_ch_invoice.FieldByName('客户名称').AsString<>'' then SQL.Add(' and 客户名称='''+t_ch_invoice.FieldByName('客户名称').AsString+''''); // else // SQL.Add(' and 客户名称=:客户名称 '); SQL.Add(str); Open; // frmch_invoice_addone.memtblDetail.open; if not IsEmpty then begin if t_ch_invoice.FieldByName('币别').AsString='USD' then frmch_invoice_addone.bsSkinRadioGroup1.ItemIndex:=1 else frmch_invoice_addone.bsSkinRadioGroup1.ItemIndex:=0; frmch_invoice_addone.ShowModal; end else begin MessageDlg('此委托编号下此客户无应开发票的费用',mtWarning,[mbYes],0); end; end; finally FreeAndNil(frmch_invoice_addone); end; end; procedure Tfrm_ch_invoice.t_ch_invoiceAfterScroll(DataSet: TDataSet); begin { if t_ch_invoice['是否废除'] then begin if t_ch_invoice['是否打印'] then begin bsSkinButton7.Caption:='删除发票'; bsSkinButton12.Caption:='删除发票'; end else begin bsSkinButton7.Caption:='废除发票'; bsSkinButton12.Caption:='废除发票'; end; end; } end; procedure Tfrm_ch_invoice.t_ch_invoice1DataChange(Sender: TObject; Field: TField); begin if t_ch_invoice.State in [dsinsert] then exit; if t_ch_invoice.IsEmpty then exit; if t_ch_invoice['是否打印'] then begin if t_ch_invoice.fieldbyname('是否废除').asboolean then begin bsSkinButton7.Caption:='撤销废除'; bsSkinButton12.Caption:='撤销废除'; end else begin bsSkinButton7.Caption:='废除发票'; bsSkinButton12.Caption:='废除发票'; end; end else begin bsSkinButton7.Caption:='删除发票'; bsSkinButton12.Caption:='删除发票'; end; end; procedure Tfrm_ch_invoice.ComboBoxObjBsCardDropDown(Sender: TObject); var aQuery:TADOQuery; begin ComboBoxObjBsCard.Items.Clear; aQuery:=CreateAdoQuery; with aQuery do try Close;SQL.Clear; SQL.Add('select distinct 发票抬头 from t_ch_invoice'); SQL.Add('order by 发票抬头'); Open; First; while not Eof do begin ComboBoxObjBsCard.Items.Add(FieldByName('发票抬头').AsString); Next; end; finally Close; FreeAndNil(aQuery); end; end; procedure Tfrm_ch_invoice.ComboBoxObjBsCardKeyPress(Sender: TObject; var Key: Char); begin // key_wwDBDateTimePicker(Key,wwDBDateTimePicker1); end; procedure Tfrm_ch_invoice.dbedt1KeyPress(Sender: TObject; var Key: Char); begin if key=#13 then DBComboBoxEh1.Text:=dbedt1.text; DBComboBoxEh1.DropDown; // ComboBoxObjBsCard.DropDown; // key_wwDBDateTimePicker(Key,wwDBDateTimePicker1); end; procedure Tfrm_ch_invoice.DBEdit30Change(Sender: TObject); begin if DBEdit30.Text='' then begin t_sys_bank.Filtered:=false; end else begin t_sys_bank.Filtered:=false; t_sys_bank.Filter:='分部名称='''+DBEdit30.text+''''; t_sys_bank.Filtered:=true; if t_sys_bank.IsEmpty then t_sys_bank.Filtered:=false; end; end; procedure Tfrm_ch_invoice.RxDBLookupCombo2Enter(Sender: TObject); begin DBEdit30Change(sender); end; procedure Tfrm_ch_invoice.bsSkinButton38Click(Sender: TObject); var book1:Tbookmark; begin book1:=t_ch_invoice.GetBookmark; t_ch_invoice.Requery; t_ch_invoice.GotoBookmark(book1); end; procedure Tfrm_ch_invoice.bsSkinButton33Click(Sender: TObject); var book1:Tbookmark; begin book1:=t_ch_invoice_shen.GetBookmark; t_ch_invoice_shen.Requery; t_ch_invoice_shen.GotoBookmark(book1); end; procedure Tfrm_ch_invoice.dxDBGrid1CustomDraw(Sender: TObject; ACanvas: TCanvas; ARect: TRect; ANode: TdxTreeListNode; AColumn: TdxDBTreeListColumn; const AText: String; AFont: TFont; var AColor: TColor; ASelected, AFocused: Boolean; var ADone: Boolean); begin if ANode.Strings[dxDBGrid1Column29.Index]='True' then begin AFont.Style:=AFont.Style+[fsStrikeOut]; AFont.Color:=clred; end; if ANode.Strings[dxDBGrid1Column38.Index]='True' then begin if frm_data_share.t_code_fee_color.Locate('费用状态','审核通过',[])then begin aColor:=StringToColor(frm_data_share.t_code_fee_color.fieldbyname('颜色').asstring); end; end; end; procedure Tfrm_ch_invoice.wwDBLookupCombo6Change(Sender: TObject); VAR total_money:real; currency_chi:string; begin //币别更改 try if (t_ch_invoice.state=dsinsert) or (t_ch_invoice.state=dsedit) then begin if frm_data_share.t_code_currency.Locate('币别',wwDBLookupCombo6.text,[])then currency_chi:=frm_data_share.t_code_currency.fieldbyname('中文名').asstring; total_money:=strtofloat(DBSumLower.text); if total_money<0 then begin total_money:=Abs(total_money); t_ch_invoice['金额大写']:=invoice_max(total_money,currency_chi+'(付)'); end else t_ch_invoice['金额大写']:=invoice_max(total_money,currency_chi); if t_sys_bank.Active then if t_sys_bank.Locate('币别',wwDBLookupCombo6.text,[])then begin t_ch_invoice['开户银行']:=t_sys_bank.fieldbyname('银行名称').asstring; t_ch_invoice['银行账号']:=t_sys_bank.fieldbyname('银行账号').asstring; end; end; except ; end; end; procedure Tfrm_ch_invoice.DBComboBoxEh1DropDown(Sender: TObject); var aQuery:TADOQuery; begin DBComboBoxEh1.Items.Clear; aQuery:=CreateAdoQuery; with aQuery do try Close;SQL.Clear; SQL.Add('select distinct 发票抬头 from t_ch_invoice'); SQL.Add('order by 发票抬头'); Open; First; while not Eof do begin DBComboBoxEh1.Items.Add(FieldByName('发票抬头').AsString); Next; end; finally Close; FreeAndNil(aQuery); end; end; procedure Tfrm_ch_invoice.dbedt1Change(Sender: TObject); begin // DBComboBoxEh1.Text:=dbedt1.text; end; procedure Tfrm_ch_invoice.DBComboBoxEh1CloseUp(Sender: TObject; Accept: Boolean); begin DBComboBoxEh1.items.Clear; end; procedure Tfrm_ch_invoice.bsSkinPageControl1Change(Sender: TObject); begin if not ch_invoice_open then exit; if bsSkinPageControl1.ActivePage=bsSkinTabSheet3 then begin if strtobool(get_parameters_value(1,'false'))then begin if not t_ch_invoice_shen.Active then t_ch_invoice_shen.open; end else begin if not t_ch_invoice_shen.Active then begin t_ch_invoice_shen.close; t_ch_invoice_shen.sql.clear; t_ch_invoice_shen.sql.add('select * from t_ch_invoice_shen '); t_ch_invoice_shen.sql.add('where 申请状态 in ('+''''+'批准开票'+''''+','+''''+'禁止修改'+''''+','+''''+'申请修改'+'''' +','+''''+'提交申请'+''''+')'); t_ch_invoice_shen.sql.add(' order by 申请编号'); t_ch_invoice_shen.Open; end; end; end; if bsSkinPageControl2.ActivePage=bsSkinTabSheet22 then // if not v_fee_do_seae.Active then begin if StrToBool(get_parameters_value(85,'false')) then begin bsSkinTabSheet4.TabVisible:=false; bsSkinTabSheet5.TabVisible:=false; bsSkinTabSheet6.TabVisible:=false; bsSkinTabSheet7.TabVisible:=false; bsSkinTabSheet14.TabVisible:=true; v_fee_do_bscard.Close; v_fee_do_bscard.DataSource:=t_ch_invoice_shen1; v_fee_do_bscard.Open; v_fee_do_seae.Close; v_fee_do_seai.Close; v_fee_do_aire.Close; v_fee_do_airi.Close; end else begin bsSkinTabSheet4.TabVisible:=true; bsSkinTabSheet5.TabVisible:=true; bsSkinTabSheet6.TabVisible:=true; bsSkinTabSheet7.TabVisible:=true; bsSkinTabSheet14.TabVisible:=false; v_fee_do_seae.open; v_fee_do_seai.open; v_fee_do_aire.open; v_fee_do_airi.open; v_fee_do_bscard.Close; end; end; if bsSkinPageControl1.ActivePage=bsSkinTabSheet2 then begin if StrToBool(get_parameters_value(85,'false')) then begin bsSkinTabSheet8.TabVisible:=false; bsSkinTabSheet9.TabVisible:=false; bsSkinTabSheet10.TabVisible:=false; bsSkinTabSheet12.TabVisible:=false; bsSkinTabSheet13.TabVisible:=true; v_fee_do_bscard.Close; v_fee_do_bscard.DataSource:=t_ch_invoice1; v_fee_do_bscard.Open; ADOQuery1.Close; ADOQuery2.Close; ADOQuery3.Close; ADOQuery4.Close; end else begin bsSkinTabSheet8.TabVisible:=true; bsSkinTabSheet9.TabVisible:=true; bsSkinTabSheet10.TabVisible:=true; bsSkinTabSheet12.TabVisible:=true; bsSkinTabSheet13.TabVisible:=false; ADOQuery1.open; ADOQuery2.open; ADOQuery3.open; ADOQuery4.open; v_fee_do_bscard.Close; end; end; end; procedure Tfrm_ch_invoice.bsSkinPageControl6Change(Sender: TObject); begin if not ch_invoice_open then exit; if not (bsSkinPageControl6.ActivePage=bstab2) then exit; fra_ch_add_do1.bs_text.text:='1'; if StrToBool(get_parameters_value(85,'false')) then begin fra_ch_delete_do1.v_fee_do_bscard.close; fra_ch_delete_do1.v_fee_do_bscard.SQL.clear; fra_ch_delete_do1.v_fee_do_bscard.sql.add('select * from v_fee_do_bscard ' +'where 工作编号='''+t_ch_invoice.fieldbyname('申请编号').AsString+''' order by 类型,编号,费用名称'); // fra_ch_delete_do1.v_fee_do_bscard.DataSource:=t_ch_invoice1; fra_ch_delete_do1.v_fee_do_bscard.Open; fra_ch_delete_do1.v_fee_do_bscard_sum.close; fra_ch_delete_do1.v_fee_do_bscard_sum.SQL.clear; fra_ch_delete_do1.v_fee_do_bscard_sum.sql.add('select 类型,SUBSTRING(CONVERT(char(15),开船日期,111),1,7) AS 月份,揽货人,原始币别,sum(原始金额) as 原始金额,sum(金额) as 金额 from v_fee_do_bscard ' +'where 工作编号='''+t_ch_invoice.fieldbyname('申请编号').AsString+''' group by 类型,SUBSTRING(CONVERT(char(15),开船日期,111),1,7),揽货人,原始币别 ' +'order by 类型,揽货人,SUBSTRING(CONVERT(char(15),开船日期,111),1,7),原始币别'); // fra_ch_delete_do1.v_fee_do_bscard_sum.DataSource:=t_ch_invoice1; fra_ch_delete_do1.v_fee_do_bscard_sum.Open; end else begin fra_ch_delete_do1.v_fee_do_seae.close; fra_ch_delete_do1.v_fee_do_seae.SQL.clear; fra_ch_delete_do1.v_fee_do_seae.sql.add('select * from v_fee_do_seae ' +'where 工作编号='''+t_ch_invoice.fieldbyname('申请编号').AsString+''' order by 编号,费用名称'); // fra_ch_delete_do1.v_fee_do_seae.DataSource:=t_ch_invoice1; fra_ch_delete_do1.v_fee_do_seae.Open; fra_ch_delete_do1.v_fee_do_seai.close; fra_ch_delete_do1.v_fee_do_seai.SQL.clear; fra_ch_delete_do1.v_fee_do_seai.sql.add('select * from v_fee_do_seai ' +'where 工作编号='''+t_ch_invoice.fieldbyname('申请编号').AsString+''' order by 编号,费用名称'); // fra_ch_delete_do1.v_fee_do_seai.DataSource:=t_ch_invoice1; fra_ch_delete_do1.v_fee_do_seai.Open; fra_ch_delete_do1.v_fee_do_aire.close; fra_ch_delete_do1.v_fee_do_aire.SQL.clear; fra_ch_delete_do1.v_fee_do_aire.sql.add('select * from v_fee_do_aire ' +'where 工作编号='''+t_ch_invoice.fieldbyname('申请编号').AsString+''' order by 编号,费用名称'); // fra_ch_delete_do1.v_fee_do_aire.DataSource:=t_ch_invoice1; fra_ch_delete_do1.v_fee_do_aire.Open; fra_ch_delete_do1.v_fee_do_airi.close; fra_ch_delete_do1.v_fee_do_airi.SQL.clear; fra_ch_delete_do1.v_fee_do_airi.sql.add('select * from v_fee_do_airi ' +'where 工作编号='''+t_ch_invoice.fieldbyname('申请编号').AsString+''' order by 编号,费用名称'); // fra_ch_delete_do1.v_fee_do_airi.DataSource:=t_ch_invoice1; fra_ch_delete_do1.v_fee_do_airi.Open; fra_ch_delete_do1.v_fee_do_seae_sum.close; fra_ch_delete_do1.v_fee_do_seae_sum.SQL.clear; fra_ch_delete_do1.v_fee_do_seae_sum.sql.add('select SUBSTRING(CONVERT(char(15),开船日期,111),1,7) AS 月份,揽货人,原始币别,sum(原始金额) as 原始金额,sum(金额) as 金额 from v_fee_do_seae ' +'where 工作编号='''+t_ch_invoice.fieldbyname('申请编号').AsString+''' group by SUBSTRING(CONVERT(char(15),开船日期,111),1,7),揽货人,原始币别 ' +'order by 揽货人,SUBSTRING(CONVERT(char(15),开船日期,111),1,7),原始币别'); // fra_ch_delete_do1.v_fee_do_seae_sum.DataSource:=t_ch_invoice1; fra_ch_delete_do1.v_fee_do_seae_sum.Open; fra_ch_delete_do1.v_fee_do_seai_sum.close; fra_ch_delete_do1.v_fee_do_seai_sum.SQL.clear; fra_ch_delete_do1.v_fee_do_seai_sum.sql.add('select SUBSTRING(CONVERT(char(15),进口日期,111),1,7) AS 月份,揽货人,原始币别,sum(原始金额) as 原始金额,sum(金额) as 金额 from v_fee_do_seai ' +'where 工作编号='''+t_ch_invoice.fieldbyname('申请编号').AsString+''' group by SUBSTRING(CONVERT(char(15),进口日期,111),1,7),揽货人,原始币别 ' +'order by 揽货人,SUBSTRING(CONVERT(char(15),进口日期,111),1,7),原始币别'); // fra_ch_delete_do1.v_fee_do_seai_sum.DataSource:=t_ch_invoice1; fra_ch_delete_do1.v_fee_do_seai_sum.Open; fra_ch_delete_do1.v_fee_do_aire_sum.close; fra_ch_delete_do1.v_fee_do_aire_sum.SQL.clear; fra_ch_delete_do1.v_fee_do_aire_sum.sql.add('select SUBSTRING(CONVERT(char(15),开航日期,111),1,7) AS 月份,揽货人,原始币别,sum(原始金额) as 原始金额,sum(金额) as 金额 from v_fee_do_aire ' +'where 工作编号='''+t_ch_invoice.fieldbyname('申请编号').AsString+''' group by SUBSTRING(CONVERT(char(15),开航日期,111),1,7),揽货人,原始币别 ' +'order by 揽货人,SUBSTRING(CONVERT(char(15),开航日期,111),1,7),原始币别'); // fra_ch_delete_do1.v_fee_do_aire_sum.DataSource:=t_ch_invoice1; fra_ch_delete_do1.v_fee_do_aire_sum.Open; fra_ch_delete_do1.v_fee_do_airi_sum.close; fra_ch_delete_do1.v_fee_do_airi_sum.SQL.clear; fra_ch_delete_do1.v_fee_do_airi_sum.sql.add('select SUBSTRING(CONVERT(char(15),进口日期,111),1,7) AS 月份,揽货人,原始币别,sum(原始金额) as 原始金额,sum(金额) as 金额 from v_fee_do_airi ' +'where 工作编号='''+t_ch_invoice.fieldbyname('申请编号').AsString+''' group by SUBSTRING(CONVERT(char(15),进口日期,111),1,7),揽货人,原始币别 ' +'order by 揽货人,SUBSTRING(CONVERT(char(15),进口日期,111),1,7),原始币别'); // fra_ch_delete_do1.v_fee_do_airi_sum.DataSource:=t_ch_invoice1; fra_ch_delete_do1.v_fee_do_airi_sum.Open; end; end; procedure Tfrm_ch_invoice.dxDBGrid3Column25CustomDraw(Sender: TObject; ACanvas: TCanvas; ARect: TRect; ANode: TdxTreeListNode; AColumn: TdxDBTreeListColumn; const AText: String; AFont: TFont; var AColor: TColor; ASelected, AFocused: Boolean; var ADone: Boolean); begin AColor:=dxgrid_color_fee(ANode.strings[dxDBGrid3Column25.Index]); AFont.Color:=clblack; end; procedure Tfrm_ch_invoice.dxDBGrid4Column25CustomDraw(Sender: TObject; ACanvas: TCanvas; ARect: TRect; ANode: TdxTreeListNode; AColumn: TdxDBTreeListColumn; const AText: String; AFont: TFont; var AColor: TColor; ASelected, AFocused: Boolean; var ADone: Boolean); begin AColor:=dxgrid_color_fee(ANode.strings[dxDBGrid4Column25.Index]); AFont.Color:=clblack; end; procedure Tfrm_ch_invoice.dxDBGrid5Column22CustomDraw(Sender: TObject; ACanvas: TCanvas; ARect: TRect; ANode: TdxTreeListNode; AColumn: TdxDBTreeListColumn; const AText: String; AFont: TFont; var AColor: TColor; ASelected, AFocused: Boolean; var ADone: Boolean); begin AColor:=dxgrid_color_fee(ANode.strings[dxDBGrid5Column22.Index]); AFont.Color:=clblack; end; procedure Tfrm_ch_invoice.dxDBGrid6Column22CustomDraw(Sender: TObject; ACanvas: TCanvas; ARect: TRect; ANode: TdxTreeListNode; AColumn: TdxDBTreeListColumn; const AText: String; AFont: TFont; var AColor: TColor; ASelected, AFocused: Boolean; var ADone: Boolean); begin AColor:=dxgrid_color_fee(ANode.strings[dxDBGrid6Column22.Index]); AFont.Color:=clblack; end; procedure Tfrm_ch_invoice.dxDBGrid3Column24CustomDraw(Sender: TObject; ACanvas: TCanvas; ARect: TRect; ANode: TdxTreeListNode; AColumn: TdxDBTreeListColumn; const AText: String; AFont: TFont; var AColor: TColor; ASelected, AFocused: Boolean; var ADone: Boolean); begin AColor:=dxgrid_color('海运出口',ANode.Strings[dxDBGrid3Column24.Index]); AFont.Color:=clblack; end; procedure Tfrm_ch_invoice.dxDBGrid4Column24CustomDraw(Sender: TObject; ACanvas: TCanvas; ARect: TRect; ANode: TdxTreeListNode; AColumn: TdxDBTreeListColumn; const AText: String; AFont: TFont; var AColor: TColor; ASelected, AFocused: Boolean; var ADone: Boolean); begin AColor:=dxgrid_color('海运出口',ANode.Strings[dxDBGrid4Column24.Index]); AFont.Color:=clblack; end; procedure Tfrm_ch_invoice.dxDBGrid7Column24CustomDraw(Sender: TObject; ACanvas: TCanvas; ARect: TRect; ANode: TdxTreeListNode; AColumn: TdxDBTreeListColumn; const AText: String; AFont: TFont; var AColor: TColor; ASelected, AFocused: Boolean; var ADone: Boolean); begin AColor:=dxgrid_color('海运出口',ANode.Strings[dxDBGrid7Column24.Index]); AFont.Color:=clblack; end; procedure Tfrm_ch_invoice.dxDBGrid8Column24CustomDraw(Sender: TObject; ACanvas: TCanvas; ARect: TRect; ANode: TdxTreeListNode; AColumn: TdxDBTreeListColumn; const AText: String; AFont: TFont; var AColor: TColor; ASelected, AFocused: Boolean; var ADone: Boolean); begin AColor:=dxgrid_color('海运出口',ANode.Strings[dxDBGrid8Column24.Index]); AFont.Color:=clblack; end; procedure Tfrm_ch_invoice.dxDBGrid7Column25CustomDraw(Sender: TObject; ACanvas: TCanvas; ARect: TRect; ANode: TdxTreeListNode; AColumn: TdxDBTreeListColumn; const AText: String; AFont: TFont; var AColor: TColor; ASelected, AFocused: Boolean; var ADone: Boolean); begin AColor:=dxgrid_color_fee(ANode.strings[dxDBGrid7Column25.Index]); AFont.Color:=clblack; end; procedure Tfrm_ch_invoice.dxDBGrid8Column25CustomDraw(Sender: TObject; ACanvas: TCanvas; ARect: TRect; ANode: TdxTreeListNode; AColumn: TdxDBTreeListColumn; const AText: String; AFont: TFont; var AColor: TColor; ASelected, AFocused: Boolean; var ADone: Boolean); begin AColor:=dxgrid_color_fee(ANode.strings[dxDBGrid8Column25.Index]); AFont.Color:=clblack; end; procedure Tfrm_ch_invoice.bsSkinButton35Click(Sender: TObject); //复制到税控 var str:Tstringlist; StrAmt,path,feename,amount,NAME,SH,DZ,ZH,INVTYPE:string; begin if t_ch_invoice.FieldByName('是否打印').asboolean then begin showmessage('发票已经打印,不能重复开票!!'); abort; end else begin //t_ch_invoice.FieldByName('是否打印').Value:=True; //开启定时查询,在定时查询中:如扫描到已打印则更新已打印,否则照旧 //直至切换选中行时停止定时查询。 end; //path:='D:\捷丰\MakeInvoice\testTax\bin\Debug\testTax.exe 开启 '; path:=KPpath+'\MakeTax.exe 开票'; //0 INVTYPE:='2'; if (DBComboBoxEh3.text='增值税专票') then begin INVTYPE:='0'; end; { if (DBComboBoxEh3.text='增值税普票') then begin path:=path+' 2 2'; end; } path:=path+' '+INVTYPE;//都是普票 //1 feename:= DM_CostType.Lines[0]; //amount:= DBSumLower.Text; StrAmt:=FloatToStr(GetUsdExrate(t_ch_invoice.FieldByName('开票日期').AsString)*t_ch_invoice.FieldByName('金额列表').AsFloat); if (t_ch_invoice.FieldByName('币别').AsString='USD') THEN begin Amount:=Trim(StrAmt); end else begin Amount:=Trim(t_ch_invoice.FieldByName('金额列表').AsString); //税率 end; if (feename='') then begin ShowMessage('请选择费用项目名称'); Exit; end; if (amount='0') or (amount='') then begin ShowMessage('请填写发票金额'); Exit; end; name:=DBComboBoxEh1.Text; if kbmMemTable1.Locate('NAME',name,[]) then begin NAME:=kbmMemTable1.fieldbyname('NAME').AsString; SH:=kbmMemTable1.fieldbyname('SH').AsString; DZ:=kbmMemTable1.fieldbyname('DZ').AsString; //如果账户型如 ZH:=kbmMemTable1.fieldbyname('ZH').AsString; path:=path+' '+trim(NAME); //2 path:=path+' '+trim(SH); //3 path:=path+' '+trim(DZ); //4 path:=path+' '+trim(ZH); //5 end else begin showmessage('客户的名称没有录入税控系统,或导出的客户编码不是最新的。' +#13#10+'请检查该客户是否已经录入税控系统,并从税控系统中重新导出客户编码.txt放入税控软件\税号\bin文件夹内。'); exit; end; if (DZDH='') then begin showmessage('请在系统信息的开票信息处填写开票单位地址电话,然后重新打开开票模块'); exit; end; //// path:=path+' '+DZDH; //6 { if (trim(DBEdit19.Text)+trim(DBEdit27.Text)='') then begin showmessage('请选择开票银行和账户'); exit; end; } path:=path+' '+'RMB招商银行青岛云霄路支行532900134010688_USD中国银行青岛东海路支行233808306778'; //trim(DBEdit19.Text)+trim(DBEdit27.Text); //7 银行账户 path:=path+' __'+StringReplace (t_ch_invoice.FieldByName('备注').AsString, ' ', '__', [rfReplaceAll]); //trim(t_ch_invoice.FieldByName('备注').AsString); //trim(DM.Lines.Strings[0]); //8 备注 if (DM.Lines.Strings[0]='') then begin path:=path+'__'; end; path:=path+' '+employee; //9 开票人 path:=path+' '+feename; //10 费用项目名 path:=path+' '+amount; //11 费用金额 path:=path+' Server=DongshengSoft02\mssqlserver2008;Database=dongshengdata_jf;uid=sa;pwd=ds20040201'; //12 数据库连接字符串 path:=path+' '+t_ch_invoice.FieldByName('IN_ID').AsString; //13 发票gid //showmessage(path); if kbmMemTable2.Locate('FEENAME',feename,[]) then begin path:=path+' '+kbmMemTable2.FieldByName('FEENAME').AsString ; //14 path:=path+' '+kbmMemTable2.FieldByName('GoodsTaxNo').AsString ; //15 path:=path+' '+kbmMemTable2.FieldByName('TaxPre').AsString ; //16 path:=path+' '+kbmMemTable2.FieldByName('CropGoodsNo').AsString ; //17 end else begin showmessage('缺少费用代码'); exit; end; //showmessage(path); winexec(Pchar(path), sw_show); tmr_UPDINV.Enabled:= True; end; procedure Tfrm_ch_invoice.btn1Click(Sender: TObject); var str:Tstringlist; StrAmt,path,feename,amount,NAME,SH,DZ,ZH,spbm,FPTT:string; begin if bsSkinCheckRadioBox1.Checked then expDZINV(0) else expINV(0); { t_ch_invoice_expitem.Close; t_ch_invoice_expitem.Open; if t_ch_invoice_expitem.RecordCount>0 then begin if MessageDlg('该发票存在单开明细,确认按照单开明细导出吗?',mtWarning,[mbYes,mbNo],0)=mrYes then begin t_ch_invoice_expitem.close; expduiINV(); end; Exit; end; t_ch_invoice_expitem.close; try str:=Tstringlist.Create; str.Clear; str.Add(''); str.Add(''); str.Add('2.0');//56 str.Add(''); str.Add('1'); str.Add('1'); //此文件含有的单据信息数量 str.Add(''); str.Add(''); str.Add(''+t_ch_invoice.FieldByName('申请编号').AsString+''); //单据号(20字节) FPTT:=trim(t_ch_invoice.FieldByName('发票抬头').AsString); str.Add(''+FPTT+''); //购方名称(100字节) //showmessage(IntToStr(kbmMemTable1.RecordCount)); if kbmMemTable1.Locate('NAME',FPTT,[]) then begin NAME:=kbmMemTable1.fieldbyname('NAME').AsString; SH:=kbmMemTable1.fieldbyname('SH').AsString; DZ:=kbmMemTable1.fieldbyname('DZ').AsString; ZH:=kbmMemTable1.fieldbyname('ZH').AsString; str.Add(''+SH+''); //购方税号 str.Add(''+trim(ZH)+''); //购方银行账号(100字节) str.Add(''+trim(DZ)+''); //购方地址电话(100字节) end else begin showmessage('客户的名称没有录入税控系统,或导出的客户编码不是最新的。' +#13#10+'请检查该客户是否已经录入税控系统,并从税控系统中重新导出客户编码.txt放入税控软件\税号\bin文件夹内。'); exit; end; str.Add(''+t_ch_invoice.FieldByName('备注').AsString+''); //备注(240字节) str.Add('崔凤琴'); //复核人(8字节) str.Add('崔文飞'); //收款人(8字节) feename:= DM_CostType.Lines[0]; amount:= DBSumLower.Text; if kbmMemTable2.Locate('FEENAME',feename,[]) then begin str.Add(''+kbmMemTable2.FieldByName('Spbmbbh').AsString+''); //商品编码版本号 if (kbmMemTable2.FieldByName('Hsbz').AsString='True') then str.Add('1') //含税标志 else str.Add('0') end else begin showmessage('缺少费用代码文件。' +#13#10+'请\从税控系统中重新导出商品编码.txt,改名为flbmxml.txt' +#13#10+',并放入税控软件\税号\bin文件夹内。'); exit; end; str.Add(''); str.Add(''); str.Add('1'); //序号 str.Add(''+feename+''); str.Add(' '); ////规格型号(40字节) str.Add(''); //计量单位(32字节) if kbmMemTable2.Locate('FEENAME',feename,[]) then begin spbm:=kbmMemTable2.FieldByName('GoodsTaxNo').AsString; while Length(spbm)<19 do begin spbm:=spbm+'0'; end; str.Add(''+spbm+''); //商品编码 str.Add(''+kbmMemTable2.FieldByName('CropGoodsNo').AsString+''); //企业商品编码 end else begin showmessage('缺少费用代码文件。' +#13#10+'请\从税控系统中重新导出商品编码.txt,改名为flbmxml.txt' +#13#10+',并放入税控软件\税号\bin文件夹内。'); exit; end; str.Add('1'); //优惠政策标识 str.Add('1'); //零税率标识 str.Add(''); //优惠政策说明 StrAmt:=FloatToStr(GetUsdExrate(t_ch_invoice.FieldByName('开票日期').AsString)*t_ch_invoice.FieldByName('金额列表').AsFloat); if t_ch_invoice.FieldByName('币别').AsString='USD' THEN begin str.Add(''+StrAmt+''); //单价 str.Add('1'); //数量 str.Add(''+StrAmt+''); //金额,当金额为负数时为折扣行 str.Add('0'); //税率 end else begin str.Add(''+t_ch_invoice.FieldByName('金额列表').AsString+''); //单价 str.Add('1'); //数量 str.Add(''+t_ch_invoice.FieldByName('金额列表').AsString+''); //金额,当金额为负数时为折扣行 str.Add('0'); //税率 end; str.Add('0'); //数量 str.Add(''); str.Add(''); str.Add(''); str.Add(''); str.Add(''); str.Add(''); // SaveDialog1.FileName:=t_ch_invoice.FieldByName('发票号码').AsString; if SaveDialog1.Execute then begin str.SaveToFile(SaveDialog1.FileName+'.XML'); showmessage('文件生成成功!'); end else begin showmessage('文件生成失败!'); exit; end; finally FreeAndNil(Str); end; } end; function EnumChildWindowsProc(hwnd,lparam:Integer):Boolean;stdcall; //遍历税控软件窗体 var WndClassName: array[0..254] of Char; WndCaption: array[0..254] of Char; WndLong: integer; pid,phd,maininv:thandle; p:pointer; st:TSystemTime; l:dword; nm:NMHDR; tg:tagNMDATETIMECHANGE; Mwd,Cwd: LongInt; StrNum:string; begin StrNum:='1'; GetClassName(hwnd,wndClassName,254); GetWindowText(hwnd,WndCaption,254); if get_parameters_value(155,'0')='0' then begin if invcontrid=9 then SendMessage(hwnd,WM_SETTEXT,255,Integer(PChar(frm_ch_invoice.t_ch_invoice.fieldbyname('银行账号').asstring))); if invcontrid=11 then SendMessage(hwnd,WM_SETTEXT,255,Integer(PChar(frm_ch_invoice.t_ch_invoice.fieldbyname('开户银行').asstring))); if invcontrid=13 then frm_ch_invoice.bibie:=hwnd; if invcontrid=21 then SendMessage(hwnd,WM_SETTEXT,255,Integer(PChar(frm_ch_invoice.t_ch_invoice.fieldbyname('提单号').asstring))); if invcontrid=23 then begin SendMessage(hwnd,WM_SETTEXT,255,Integer(PChar(frm_ch_invoice.t_ch_invoice.fieldbyname('目的港').asstring))); end; if invcontrid=25 then begin SendMessage(hwnd,WM_SETTEXT,255,Integer(PChar(frm_ch_invoice.t_ch_invoice.fieldbyname('卸货港').asstring))); end; if invcontrid=27 then begin SendMessage(hwnd,WM_SETTEXT,255,Integer(PChar(frm_ch_invoice.t_ch_invoice.fieldbyname('启运港').asstring))) end; if invcontrid=29 then begin SendMessage(hwnd,WM_SETTEXT,255,Integer(PChar(frm_ch_invoice.t_ch_invoice.fieldbyname('船名航次').asstring))) end; if invcontrid=31 then begin SendMessage(hwnd,WM_SETTEXT,255,Integer(PChar(frm_ch_invoice.t_ch_invoice.fieldbyname('发票抬头').asstring))) end; if (invcontrid=35) then begin frm_ch_invoice.vessldate:=hwnd; end; if (invcontrid=77) and (frm_ch_invoice.fprice1<>'') then begin SendMessage(hwnd,WM_SETTEXT,255,Integer(PChar(frm_ch_invoice.fprice1))); end; if (invcontrid=78) and (frm_ch_invoice.fprice1<>'') then begin frm_ch_invoice.feinum:=hwnd; end; if (invcontrid=80) and (frm_ch_invoice.fname1<>'') then begin SendMessage(hwnd,WM_SETTEXT,255,Integer(PChar(frm_ch_invoice.fname1))); end; if (invcontrid=73) and (frm_ch_invoice.fprice2<>'') then begin SendMessage(hwnd,WM_SETTEXT,255,Integer(PChar(frm_ch_invoice.fprice2))); end; if (invcontrid=74) and (frm_ch_invoice.fprice2<>'') then begin SendMessage(hwnd,WM_Char,Wparam('1'),1); end; if (invcontrid=82) and (frm_ch_invoice.fname2<>'') then begin SendMessage(hwnd,WM_SETTEXT,255,Integer(PChar(frm_ch_invoice.fname2))); end; if (invcontrid=70) and (frm_ch_invoice.fprice3<>'') then begin SendMessage(hwnd,WM_SETTEXT,255,Integer(PChar(frm_ch_invoice.fprice3))); end; if (invcontrid=71) and (frm_ch_invoice.fprice3<>'') then begin SendMessage(hwnd,WM_Char,Wparam('1'),1); end; if (invcontrid=84) and (frm_ch_invoice.fname3<>'') then begin SendMessage(hwnd,WM_SETTEXT,255,Integer(PChar(frm_ch_invoice.fname3))); end; if (invcontrid=67) and (frm_ch_invoice.fprice4<>'') then begin SendMessage(hwnd,WM_SETTEXT,255,Integer(PChar(frm_ch_invoice.fprice4))); end; if (invcontrid=68) and (frm_ch_invoice.fprice4<>'') then begin SendMessage(hwnd,WM_Char,Wparam('1'),1); end; if (invcontrid=86) and (frm_ch_invoice.fname4<>'') then begin SendMessage(hwnd,WM_SETTEXT,255,Integer(PChar(frm_ch_invoice.fname4))); end; if (invcontrid=64) and (frm_ch_invoice.fprice5<>'') then begin SendMessage(hwnd,WM_SETTEXT,255,Integer(PChar(frm_ch_invoice.fprice5))); end; if (invcontrid=65) and (frm_ch_invoice.fprice5<>'') then begin SendMessage(hwnd,WM_Char,Wparam('1'),1); end; if (invcontrid=88) and (frm_ch_invoice.fname5<>'') then begin SendMessage(hwnd,WM_SETTEXT,255,Integer(PChar(frm_ch_invoice.fname5))); end; if (invcontrid=48) and (frm_ch_invoice.fprice6<>'') then begin SendMessage(hwnd,WM_SETTEXT,255,Integer(PChar(frm_ch_invoice.fprice6))); end; if (invcontrid=49) and (frm_ch_invoice.fprice6<>'') then begin SendMessage(hwnd,WM_Char,Wparam('1'),1); end; if (invcontrid=90) and (frm_ch_invoice.fname6<>'') then begin SendMessage(hwnd,WM_SETTEXT,255,Integer(PChar(frm_ch_invoice.fname6))); end; if (invcontrid=45) and (frm_ch_invoice.fprice7<>'') then begin SendMessage(hwnd,WM_SETTEXT,255,Integer(PChar(frm_ch_invoice.fprice7))); end; if (invcontrid=46) and (frm_ch_invoice.fprice7<>'') then begin SendMessage(hwnd,WM_Char,Wparam('1'),1); end; if (invcontrid=92) and (frm_ch_invoice.fname7<>'') then begin SendMessage(hwnd,WM_SETTEXT,255,Integer(PChar(frm_ch_invoice.fname7))); end; if invcontrid=75 then begin SendMessage(hwnd,WM_SETTEXT,255,Integer(PChar(frm_ch_invoice.t_ch_invoice.fieldbyname('备注').asstring))) end; end else if get_parameters_value(155,'0')='1' then begin if invcontrid=24 then begin SendMessage(hwnd,WM_SETTEXT,255,Integer(PChar(frm_ch_invoice.t_ch_invoice.fieldbyname('银行账号').asstring))) end; if invcontrid=40 then begin SendMessage(hwnd,WM_SETTEXT,255,Integer(PChar(frm_ch_invoice.t_ch_invoice.fieldbyname('开户银行').asstring))) end; if invcontrid=12 then begin frm_ch_invoice.bibie:=hwnd; end; if invcontrid=16 then begin SendMessage(hwnd,WM_SETTEXT,255,Integer(PChar(frm_ch_invoice.t_ch_invoice.fieldbyname('目的港').asstring))) end; if invcontrid=18 then begin SendMessage(hwnd,WM_SETTEXT,255,Integer(PChar(frm_ch_invoice.t_ch_invoice.fieldbyname('卸货港').asstring))) end; if invcontrid=20 then begin SendMessage(hwnd,WM_SETTEXT,255,Integer(PChar(frm_ch_invoice.t_ch_invoice.fieldbyname('启运港').asstring))) end; if invcontrid=22 then begin SendMessage(hwnd,WM_SETTEXT,255,Integer(PChar(frm_ch_invoice.t_ch_invoice.fieldbyname('启运港').asstring))) end; if invcontrid=42 then begin SendMessage(hwnd,WM_SETTEXT,255,Integer(PChar(frm_ch_invoice.t_ch_invoice.fieldbyname('船名航次').asstring))) end; if invcontrid=26 then begin SendMessage(hwnd,WM_SETTEXT,255,Integer(PChar(frm_ch_invoice.t_ch_invoice.fieldbyname('发票抬头').asstring))) end; if (invcontrid=33) then begin frm_ch_invoice.vessldate:=hwnd; end; if (invcontrid=103) and (frm_ch_invoice.fprice1<>'') then begin SendMessage(hwnd,WM_SETTEXT,255,Integer(PChar(frm_ch_invoice.fprice1))); end; if (invcontrid=104) and (frm_ch_invoice.fprice1<>'') then begin SendMessage(hwnd,WM_SETTEXT,255,Integer(PChar(inttostr(1)))) end; if (invcontrid=105) and (frm_ch_invoice.fprice1<>'') then begin frm_ch_invoice.feinum:=hwnd; // SendMessage(hwnd,WM_SETTEXT,255,Integer(PChar(inttostr(1)))) end; if (invcontrid=108) and (frm_ch_invoice.fname1<>'') then begin SendMessage(hwnd,WM_SETTEXT,255,Integer(PChar(frm_ch_invoice.fname1))); end; if (invcontrid=98) and (frm_ch_invoice.fprice2<>'') then begin SendMessage(hwnd,WM_SETTEXT,255,Integer(PChar(frm_ch_invoice.fprice2))); end; if (invcontrid=99) and (frm_ch_invoice.fprice2<>'') then begin SendMessage(hwnd,WM_SETTEXT,255,Integer(PChar(inttostr(1)))) end; if (invcontrid=100) and (frm_ch_invoice.fprice2<>'') then begin SendMessage(hwnd,WM_SETTEXT,255,Integer(PChar(inttostr(1)))) end; if (invcontrid=55) and (frm_ch_invoice.fname2<>'') then begin SendMessage(hwnd,WM_SETTEXT,255,Integer(PChar(frm_ch_invoice.fname2))); end; if (invcontrid=94) and (frm_ch_invoice.fprice3<>'') then begin SendMessage(hwnd,WM_SETTEXT,255,Integer(PChar(frm_ch_invoice.fprice3))); end; if (invcontrid=95) and (frm_ch_invoice.fprice3<>'') then begin SendMessage(hwnd,WM_SETTEXT,255,Integer(PChar(inttostr(1)))) end; if (invcontrid=96) and (frm_ch_invoice.fprice3<>'') then begin SendMessage(hwnd,WM_SETTEXT,255,Integer(PChar(inttostr(1)))) end; if (invcontrid=53) and (frm_ch_invoice.fname3<>'') then begin SendMessage(hwnd,WM_SETTEXT,255,Integer(PChar(frm_ch_invoice.fname3))); end; if (invcontrid=90) and (frm_ch_invoice.fprice4<>'') then begin SendMessage(hwnd,WM_SETTEXT,255,Integer(PChar(frm_ch_invoice.fprice4))); end; if (invcontrid=91) and (frm_ch_invoice.fprice4<>'') then begin SendMessage(hwnd,WM_SETTEXT,255,Integer(PChar(inttostr(1)))) end; if (invcontrid=92) and (frm_ch_invoice.fprice4<>'') then begin SendMessage(hwnd,WM_SETTEXT,255,Integer(PChar(inttostr(1)))) end; if (invcontrid=51) and (frm_ch_invoice.fname4<>'') then begin SendMessage(hwnd,WM_SETTEXT,255,Integer(PChar(frm_ch_invoice.fname4))); end; if (invcontrid=86) and (frm_ch_invoice.fprice5<>'') then begin SendMessage(hwnd,WM_SETTEXT,255,Integer(PChar(frm_ch_invoice.fprice5))); end; if (invcontrid=87) and (frm_ch_invoice.fprice5<>'') then begin SendMessage(hwnd,WM_SETTEXT,255,Integer(PChar(inttostr(1)))) end; if (invcontrid=88) and (frm_ch_invoice.fprice5<>'') then begin SendMessage(hwnd,WM_SETTEXT,255,Integer(PChar(inttostr(1)))) end; if (invcontrid=49) and (frm_ch_invoice.fname5<>'') then begin SendMessage(hwnd,WM_SETTEXT,255,Integer(PChar(frm_ch_invoice.fname5))); end; if (invcontrid=68) and (frm_ch_invoice.fprice6<>'') then begin SendMessage(hwnd,WM_SETTEXT,255,Integer(PChar(frm_ch_invoice.fprice6))); end; if (invcontrid=69) and (frm_ch_invoice.fprice6<>'') then begin SendMessage(hwnd,WM_SETTEXT,255,Integer(PChar(inttostr(1)))) end; if (invcontrid=70) and (frm_ch_invoice.fprice6<>'') then begin SendMessage(hwnd,WM_SETTEXT,255,Integer(PChar(inttostr(1)))) end; if (invcontrid=47) and (frm_ch_invoice.fname6<>'') then begin SendMessage(hwnd,WM_SETTEXT,255,Integer(PChar(frm_ch_invoice.fname6))); end; if (invcontrid=64) and (frm_ch_invoice.fprice7<>'') then begin SendMessage(hwnd,WM_SETTEXT,255,Integer(PChar(frm_ch_invoice.fprice7))); end; if (invcontrid=65) and (frm_ch_invoice.fprice7<>'') then begin SendMessage(hwnd,WM_SETTEXT,255,Integer(PChar(inttostr(1)))) end; if (invcontrid=66) and (frm_ch_invoice.fprice7<>'') then begin SendMessage(hwnd,WM_SETTEXT,255,Integer(PChar(inttostr(1)))) end; if (invcontrid=45) and (frm_ch_invoice.fname7<>'') then begin SendMessage(hwnd,WM_SETTEXT,255,Integer(PChar(frm_ch_invoice.fname7))); end; if invcontrid=102 then begin SendMessage(hwnd,WM_SETTEXT,255,Integer(PChar(frm_ch_invoice.t_ch_invoice.fieldbyname('备注').asstring))); end; if invcontrid=106 then begin SendMessage(hwnd,WM_SETTEXT,255,Integer(PChar(frm_ch_invoice.t_ch_invoice.fieldbyname('提单号').asstring))); end; end else if get_parameters_value(155,'0')='2' then begin if invcontrid=9 then begin SendMessage(hwnd,WM_SETTEXT,255,Integer(PChar(frm_ch_invoice.t_ch_invoice.fieldbyname('银行账号').asstring))) end; if invcontrid=11 then begin SendMessage(hwnd,WM_SETTEXT,255,Integer(PChar(frm_ch_invoice.t_ch_invoice.fieldbyname('开户银行').asstring))) end; if invcontrid=13 then begin // 原来为13 frm_ch_invoice.bibie:=hwnd; end; if invcontrid=24 then begin //原来为21 SendMessage(hwnd,WM_SETTEXT,255,Integer(PChar(frm_ch_invoice.t_ch_invoice.fieldbyname('提单号').asstring))) end; if invcontrid=26 then begin //原来为23 SendMessage(hwnd,WM_SETTEXT,255,Integer(PChar(frm_ch_invoice.t_ch_invoice.fieldbyname('目的港').asstring))) end; if invcontrid=28 then begin //原来为25 SendMessage(hwnd,WM_SETTEXT,255,Integer(PChar(frm_ch_invoice.t_ch_invoice.fieldbyname('卸货港').asstring))) end; if invcontrid=30 then begin //原来为27 SendMessage(hwnd,WM_SETTEXT,255,Integer(PChar(frm_ch_invoice.t_ch_invoice.fieldbyname('启运港').asstring))) end; if invcontrid=32 then begin //原来为29 SendMessage(hwnd,WM_SETTEXT,255,Integer(PChar(frm_ch_invoice.t_ch_invoice.fieldbyname('船名航次').asstring))) end; if invcontrid=23 then begin //原来为31 SendMessage(hwnd,WM_SETTEXT,255,Integer(PChar(frm_ch_invoice.t_ch_invoice.fieldbyname('付款单位').asstring))) end; if (invcontrid=78) and (frm_ch_invoice.fprice1<>'') then begin //原来为 77 SendMessage(hwnd,WM_SETTEXT,255,Integer(PChar(frm_ch_invoice.fprice1))); end; if (invcontrid=79) and (frm_ch_invoice.fprice1<>'') then begin //原来为 78 // SendMessage(hwnd,WM_SETTEXT,255,Integer(PChar(StrNum))); frm_ch_invoice.feinum:=hwnd; end; if (invcontrid=81) and (frm_ch_invoice.fname1<>'') then begin //原来为 80 SendMessage(hwnd,WM_SETTEXT,255,Integer(PChar(frm_ch_invoice.fname1))); end; if (invcontrid=74) and (frm_ch_invoice.fprice2<>'') then begin //原来为 73 SendMessage(hwnd,WM_SETTEXT,255,Integer(PChar(frm_ch_invoice.fprice2))); end; if (invcontrid=75) and (frm_ch_invoice.fprice2<>'') then begin //原来为 74 // SendMessage(hwnd,WM_Char,Wparam('1'),1); SendMessage(hwnd,WM_SETTEXT,255,Integer(PChar(StrNum))); end; if (invcontrid=83) and (frm_ch_invoice.fname2<>'') then begin //原来为 82 SendMessage(hwnd,WM_SETTEXT,255,Integer(PChar(frm_ch_invoice.fname2))); end; if (invcontrid=71) and (frm_ch_invoice.fprice3<>'') then begin //原来为 70 SendMessage(hwnd,WM_SETTEXT,255,Integer(PChar(frm_ch_invoice.fprice3))); end; if (invcontrid=72) and (frm_ch_invoice.fprice3<>'') then begin //原来为 71 // SendMessage(hwnd,WM_Char,Wparam('1'),1); SendMessage(hwnd,WM_SETTEXT,255,Integer(PChar(StrNum))); end; if (invcontrid=85) and (frm_ch_invoice.fname3<>'') then begin //原来为 84 SendMessage(hwnd,WM_SETTEXT,255,Integer(PChar(frm_ch_invoice.fname3))); end; if (invcontrid=68) and (frm_ch_invoice.fprice4<>'') then begin //原来为 67 SendMessage(hwnd,WM_SETTEXT,255,Integer(PChar(frm_ch_invoice.fprice4))); end; if (invcontrid=69) and (frm_ch_invoice.fprice4<>'') then begin //原来为 68 // SendMessage(hwnd,WM_Char,Wparam('1'),1); SendMessage(hwnd,WM_SETTEXT,255,Integer(PChar(StrNum))); end; if (invcontrid=87) and (frm_ch_invoice.fname4<>'') then begin //原来为 86 SendMessage(hwnd,WM_SETTEXT,255,Integer(PChar(frm_ch_invoice.fname4))); end; if (invcontrid=65) and (frm_ch_invoice.fprice5<>'') then begin //原来为 64 SendMessage(hwnd,WM_SETTEXT,255,Integer(PChar(frm_ch_invoice.fprice5))); end; if (invcontrid=66) and (frm_ch_invoice.fprice5<>'') then begin //原来为 65 // SendMessage(hwnd,WM_Char,Wparam('1'),1); SendMessage(hwnd,WM_SETTEXT,255,Integer(PChar(StrNum))); end; if (invcontrid=89) and (frm_ch_invoice.fname5<>'') then begin //原来为 88 SendMessage(hwnd,WM_SETTEXT,255,Integer(PChar(frm_ch_invoice.fname5))); end; if (invcontrid=49) and (frm_ch_invoice.fprice6<>'') then begin //原来为 48 SendMessage(hwnd,WM_SETTEXT,255,Integer(PChar(frm_ch_invoice.fprice6))); end; if (invcontrid=50) and (frm_ch_invoice.fprice6<>'') then begin //原来为 49 // SendMessage(hwnd,WM_Char,Wparam('1'),1); SendMessage(hwnd,WM_SETTEXT,255,Integer(PChar(StrNum))); end; if (invcontrid=91) and (frm_ch_invoice.fname6<>'') then begin //原来为 90 SendMessage(hwnd,WM_SETTEXT,255,Integer(PChar(frm_ch_invoice.fname6))); end; if (invcontrid=46) and (frm_ch_invoice.fprice7<>'') then begin //原来为 45 SendMessage(hwnd,WM_SETTEXT,255,Integer(PChar(frm_ch_invoice.fprice7))); end; if (invcontrid=47) and (frm_ch_invoice.fprice7<>'') then begin //原来为 46 // SendMessage(hwnd,WM_Char,Wparam('1'),1); SendMessage(hwnd,WM_SETTEXT,255,Integer(PChar(StrNum))); end; if (invcontrid=92) and (frm_ch_invoice.fname7<>'') then begin //原来为 92 SendMessage(hwnd,WM_SETTEXT,255,Integer(PChar(frm_ch_invoice.fname7))); end; if invcontrid=76 then begin //原来为 75 SendMessage(hwnd,WM_SETTEXT,255,Integer(PChar(frm_ch_invoice.t_ch_invoice.fieldbyname('备注').asstring))) end; end; invcontrid:=invcontrid+1; result:=true; end; function Tfrm_ch_invoice.getfeestr: boolean; //初始化税控数据 var i,j:integer; str_num,str:string; begin fname1:=''; fname2:=''; fname3:=''; fname4:=''; fname5:=''; fname6:=''; fname7:=''; fprice1:=''; fprice2:=''; fprice3:=''; fprice4:=''; fprice5:=''; fprice6:=''; fprice7:=''; fnum:='1'; try for i:=0 to DM_CostType.Lines.Count-1 do begin str:=trim(DM_CostType.Lines[i]); if str<>'' then begin if i=0 then begin fname1:=str; end; if i=1 then begin fname2:=str; end; if i=2 then begin fname3:=str; end; if i=3 then begin fname4:=str; end; if i=4 then begin fname5:=str; end; if i=5 then begin fname6:=str; end; if i=6 then begin fname7:=str; end; end; end; for i:=0 to DM_Money.Lines.Count-1 do begin str:=trim(DM_Money.Lines[i]); str_num:=''; for j:=1 to length(str) do begin if (str[j]='0') or (str[j]='1') OR (str[j]='2') or (str[j]='3') OR (str[j]='4') or (str[j]='5') OR (str[j]='6') or (str[j]='7') OR (str[j]='8') or (str[j]='9') or (str[j]='.')then begin str_num:=str_num+str[j]; end else begin end; end; if str<>'' then begin if i=0 then begin fprice1:=str_num; end; if i=1 then begin fprice2:=str_num; end; if i=2 then begin fprice3:=str_num; end; if i=3 then begin fprice4:=str_num; end; if i=4 then begin fprice5:=str_num; end; if i=5 then begin fprice6:=str_num; end; if i=6 then begin fprice7:=str_num; end; end; end; finally end; end; procedure Tfrm_ch_invoice.bsSkinPanel2Resize(Sender: TObject); var i:integer; begin if not if_reg(417) then begin i:=round(bsSkinPanel2.Width/12); bsSkinButton9.Width:=i; bsSkinButton2.Width:=i; bsSkinButton10.Width:=i; bsSkinButton6.Width:=i; bsSkinButton7.Width:=i; bsSkinButton8.Width:=i; bsSkinButton1.Width:=i; bsSkinButton3.Width:=i; bsSkinButton38.Width:=i; bsSkinButton40.Width:=i; btn2.Width:=i; end else begin i:=round(bsSkinPanel2.Width/13); bsSkinButton9.Width:=i; bsSkinButton2.Width:=i; bsSkinButton10.Width:=i; bsSkinButton6.Width:=i; bsSkinButton7.Width:=i; bsSkinButton8.Width:=i; bsSkinButton1.Width:=i; bsSkinButton3.Width:=i; bsSkinButton38.Width:=i; bsSkinButton34.Width:=i; bsSkinButton40.Width:=i; btn2.Width:=i; end; bsSkinCheckRadioBox1.Left:=btn2.Left; end; procedure Tfrm_ch_invoice.bsSkinPageControl2Change(Sender: TObject); begin if bsSkinPageControl2.TabIndex=1 then if StrToBool(get_parameters_value(85,'false')) then begin bsSkinTabSheet4.TabVisible:=false; bsSkinTabSheet5.TabVisible:=false; bsSkinTabSheet6.TabVisible:=false; bsSkinTabSheet7.TabVisible:=false; bsSkinTabSheet14.TabVisible:=true; v_fee_do_bscard.Close; v_fee_do_bscard.DataSource:=t_ch_invoice_shen1; v_fee_do_bscard.Open; v_fee_do_seae.Close; v_fee_do_seai.Close; v_fee_do_aire.Close; v_fee_do_airi.Close; end else begin bsSkinTabSheet4.TabVisible:=true; bsSkinTabSheet5.TabVisible:=true; bsSkinTabSheet6.TabVisible:=true; bsSkinTabSheet7.TabVisible:=true; bsSkinTabSheet14.TabVisible:=false; v_fee_do_seae.open; v_fee_do_seai.open; v_fee_do_aire.open; v_fee_do_airi.open; v_fee_do_bscard.Close; end; end; procedure Tfrm_ch_invoice.dxDBGridColumn43CustomDraw(Sender: TObject; ACanvas: TCanvas; ARect: TRect; ANode: TdxTreeListNode; AColumn: TdxDBTreeListColumn; const AText: String; AFont: TFont; var AColor: TColor; ASelected, AFocused: Boolean; var ADone: Boolean); begin AColor:=dxgrid_color(ANode.Strings[dxDBGrid11Column26.Index],ANode.Strings[dxDBGridColumn43.Index]); AFont.Color:=clblack; end; procedure Tfrm_ch_invoice.dxDBGridColumn44CustomDraw(Sender: TObject; ACanvas: TCanvas; ARect: TRect; ANode: TdxTreeListNode; AColumn: TdxDBTreeListColumn; const AText: String; AFont: TFont; var AColor: TColor; ASelected, AFocused: Boolean; var ADone: Boolean); begin AColor:=dxgrid_color_fee(ANode.strings[dxDBGridColumn44.Index]); AFont.Color:=clblack; end; procedure Tfrm_ch_invoice.fra_ch_add_do1MenuItem1Click(Sender: TObject); begin fra_ch_add_do1.MenuItem1Click(Sender); end; procedure Tfrm_ch_invoice.fra_ch_add_do1bsSkinButton11Click( Sender: TObject); begin fra_ch_add_do1.bsSkinButton11Click(Sender); end; procedure Tfrm_ch_invoice.bsSkinButton36Click(Sender: TObject); var ASqlQuery:TADOQuery; str1,str2:Tstringlist; begin ASqlQuery:=CreateAdoQuery; str1:=Tstringlist.Create; str2:=Tstringlist.Create; with ASqlQuery do try str1.Clear; str2.Clear; Close;SQL.Clear; SQL.Add('select 主提单号,sum(金额) 金额 from v_fee_do_bscard'); SQL.Add('where 工作编号=:申请编号'); SQL.Add('Group by 主提单号'); SQL.Add('order by 主提单号'); Parameters.ParamByName('申请编号').Value:=t_ch_invoice.fieldByName('申请编号').AsString; Open;First; while not eof do begin if t_ch_invoice['币别']='USD' then str1.Add(get_parameters_value(7,'代理海运费')+fieldByName('主提单号').AsString) else str1.Add(get_parameters_value(147,'代理运杂费')+fieldByName('主提单号').AsString); str2.Add(fieldByName('金额').AsString); Next; end; t_ch_invoice.Edit; t_ch_invoice['费用列表']:=str1.text; t_ch_invoice['金额列表']:=str2.text; t_ch_invoice.Post; finally Free; str1.Free; str2.Free; end; end; procedure Tfrm_ch_invoice.DBComboBoxEh2DropDown(Sender: TObject); var aQuery:TADOQuery; begin DBComboBoxEh2.Items.Clear; aQuery:=CreateAdoQuery; with aQuery do try Close;SQL.Clear; SQL.Add('declare @s varchar(100),@sql varchar(1000) '); SQL.Add('set @s=(select 参数值 from t_sys_parameters_value where vl_id=512) '); SQL.Add(' set @sql='+#39+'select 费用选择列表='+#39+#39+#39+'+ replace(@s,'+#39+','+#39+','+#39+#39+#39+' union all select '+#39+#39+#39+')+'+#39+#39+#39+#39+' '); //SQL.Add('PRINT @sql '); SQL.Add('exec (@sql)'); Open; First; while not Eof do begin DBComboBoxEh2.Items.Add(FieldByName('费用选择列表').AsString); Next; end; finally Close; FreeAndNil(aQuery); end; end; procedure Tfrm_ch_invoice.DM_CostTypeKeyPress(Sender: TObject; var Key: Char); begin if Key=#13 then if DM_CostType.Lines.Count>=10 then begin ShowMessage('发票明细不能操过10行'); abort; end; end; procedure Tfrm_ch_invoice.DBComboBoxEh2CloseUp(Sender: TObject; Accept: Boolean); begin DBComboBoxEh2.items.Clear; end; procedure Tfrm_ch_invoice.DBComboBoxEh2Change(Sender: TObject); begin if DBComboBoxEh2.Items.Count>0 then begin t_ch_invoice.Edit; t_ch_invoice['费用列表']:=DBComboBoxEh2.Items.Strings[DBComboBoxEh2.ItemIndex]; if pos('场站',t_ch_invoice.FieldByName('费用列表').asstring)>0 then begin RxDBLookupCombo2.Value:='03'; end; end; end; procedure Tfrm_ch_invoice.bsSkinButton15Click(Sender: TObject); var aAdoQuery:TAdoQuery; afield : variant; i: Integer; bsno:string; AmtRmb,UsdRmb:double; begin aAdoQuery:=CreateAdoQuery; with aAdoQuery do try Close;sql.Clear; sql.Add('select count(*) c'); sql.Add('From t_ch_fee_do'); sql.Add('where 工作编号=:bsno'); Parameters.ParamByName('bsno').Value:=t_ch_invoice.FieldByName('申请编号').Value; open;First; if FieldByName('c').AsInteger<=0 then begin ShowMessage('不存在费用明细,不用拆分'); Exit; end; finally free; end; bsno:=t_ch_invoice.FieldByName('申请编号').Value; AmtRmb:=t_ch_invoice.FieldByName('人民币金额').AsFloat; UsdRmb:=t_ch_invoice.FieldByName('美元金额').AsFloat; if (t_ch_invoice.FieldByName('人民币金额').AsFloat<>0) and (t_ch_invoice.FieldByName('美元金额').AsFloat<>0) then begin try frm_ch_invoice_add:=tfrm_ch_invoice_add.Create (self); frm_ch_invoice_add.bsSkinCheckRadioBox3.checked:=True; frm_ch_invoice_add.bsSkinCheckRadioBox1.enabled:=false; frm_ch_invoice_add.bsSkinCheckRadioBox2.Visible:=false; frm_ch_invoice_add.wwDBLookupCombo6.Text:='USD'; frm_ch_invoice_add.bsSkinCheckRadioBox8.enabled:=false; frm_ch_invoice_add.ShowModal; finally frm_ch_invoice_add.Free; end; end else begin ShowMessage('本票不需要拆分申请'); Exit; end; end; procedure Tfrm_ch_invoice.bsSkinButton20Click(Sender: TObject); var ASqlQuery:TADOQuery; str1,str2:Tstringlist; //提取提单号至备注 begin ASqlQuery:=CreateAdoQuery; str1:=Tstringlist.Create; str2:=Tstringlist.Create; with ASqlQuery do try str1.Clear; str2.Clear; Close;SQL.Clear; SQL.Add('select top 1 主提单号 from v_fee_do_bscard'); SQL.Add('where 工作编号=:申请编号'); Parameters.ParamByName('申请编号').Value:=t_ch_invoice.fieldByName('申请编号').AsString; Open; t_ch_invoice.Edit; t_ch_invoice['备注']:=t_ch_invoice.fieldbyname('备注').AsString+#13#10+fieldbyname('主提单号').AsString; t_ch_invoice.Post; finally Free; str1.Free; str2.Free; end; end; procedure Tfrm_ch_invoice.readcustomer; var ts:Tstringlist; List:Tstringlist;//这个主要是用来分离出 你的 每行的字 i,j:Integer; _ts,YCSH,DQSH:string; aquery:TADOQuery; begin ts:=Tstringlist.create; list:=Tstringlist.create; aquery:=CreateAdoQuery; try kbmMemTable1.EmptyTable; kbmMemTable1.Open; // t_crm_client_Invoice.Open; aquery.Close; aquery.SQL.Add('select * from t_crm_client_Invoice'); aquery.Open; aquery.First; { try ts.loadfromfile(KPpath+'\客户编码.txt'); finally end; } while not aquery.Eof do // for i:=0 to ts.count-1 do begin { _ts:=StringReplace (ts[i], '~~', '~', [rfReplaceAll]); _ts:=StringReplace (_ts, ' ', '_', [rfReplaceAll]); list.delimiter:='~'; list.delimitedText:=_ts; } // if(list.Count>3 ) then begin // if(List[3]<>'') and (list[1]<>'名称') then begin { if kbmMemTable1.Locate('NAME',aquery.fieldbyname('发票抬头').AsString,[]) then begin // YCSH:=Trim(kbmMemTable1.FieldByName('SH').AsString); //已存税号 // DQSH:=Trim(List[3]); // if (Length(YCSH)=15) and (Length(DQSH)=18) then begin kbmMemTable1.Edit; kbmMemTable1.FieldByName('NAME').AsString := aquery.fieldbyname('发票抬头').AsString; kbmMemTable1.FieldByName('SH').AsString :=aquery.fieldbyname('纳税人识别号').AsString; kbmMemTable1.FieldByName('DZ').AsString := aquery.fieldbyname('地址电话').AsString; kbmMemTable1.FieldByName('ZH').AsString := aquery.fieldbyname('开户行及帐号').AsString; kbmMemTable1.post; // end; end else begin } kbmMemTable1.Append; kbmMemTable1.FieldByName('NAME').AsString := aquery.fieldbyname('发票抬头').AsString; kbmMemTable1.FieldByName('SH').AsString :=aquery.fieldbyname('纳税人识别号').AsString; kbmMemTable1.FieldByName('DZ').AsString := aquery.fieldbyname('地址电话').AsString; kbmMemTable1.FieldByName('ZH').AsString := aquery.fieldbyname('开户行及帐号').AsString; kbmMemTable1.FieldByName('BB').AsString := aquery.fieldbyname('币别').AsString; //kbmMemTable1.Append; kbmMemTable1.post; // end; // end; // end; aquery.Next; end; finally FreeAndNil(aquery); ts.free; list.free; end; end; procedure Tfrm_ch_invoice.readfeename; var ts:Tstringlist; List:Tstringlist;//这个主要是用来分离出 你的 每行的字 i,j:Integer; _ts:string; aquery:TADOQuery; begin // ts:=Tstringlist.create; // list:=Tstringlist.create; aquery:=CreateAdoQuery; try kbmMemTable2.EmptyTable; kbmMemTable2.Open; aquery.Close; aquery.SQL.Add('select * from t_code_goods_inv'); aquery.Open; aquery.First; while not aquery.Eof do begin kbmMemTable2.Append; kbmMemTable2.FieldByName('FEENAME').AsString := aquery.fieldbyname('商品名称').AsString; kbmMemTable2.FieldByName('GoodsTaxNo').AsString := aquery.fieldbyname('商品编码').AsString; kbmMemTable2.FieldByName('TaxPre').AsString := aquery.fieldbyname('享受优惠政策').AsString; kbmMemTable2.FieldByName('CropGoodsNo').AsString := aquery.fieldbyname('商品编码').AsString; kbmMemTable2.FieldByName('Spbmbbh').AsString :=aquery.fieldbyname('优惠政策说明').AsString; if (aquery.fieldbyname('零税率标识').AsString='0') then kbmMemTable2.FieldByName('Hsbz').AsString :='True' else kbmMemTable2.FieldByName('Hsbz').AsString :='False'; kbmMemTable2.post; aquery.Next; end; { ts.loadfromfile(KPpath+'\flbmxml.txt'); for i:=0 to ts.count-1 do begin _ts:=StringReplace (ts[i], '~~', '~', [rfReplaceAll]); list.delimiter:='~'; list.delimitedText:=_ts; if(list.Count>3 ) then begin if(List[3]<>'') and (list[0]<>'//') then begin //lst1.Items.Add('--------'+inttostr(i)+'--------'); kbmMemTable2.Append; kbmMemTable2.FieldByName('FEENAME').AsString := List[1]; kbmMemTable2.FieldByName('GoodsTaxNo').AsString := List[11]; kbmMemTable2.FieldByName('TaxPre').AsString := List[4]; kbmMemTable2.FieldByName('CropGoodsNo').AsString := List[3]; kbmMemTable2.FieldByName('Spbmbbh').AsString := List[16]; kbmMemTable2.FieldByName('Hsbz').AsString := List[8]; kbmMemTable2.post; end; end; end; } finally // ts.free; // list.free; end; end; procedure Tfrm_ch_invoice.dxDBGrid1Click(Sender: TObject); begin Change_INV(t_ch_invoice.FieldByName('发票号码').AsString); setBankflowButtonState(); end; procedure Tfrm_ch_invoice.Change_INV(IN_ID: string); begin if (OLD_IN_ID='') then begin end else begin if (OLD_IN_ID<>t_ch_invoice.FieldByName('发票号码').AsString) then begin OLD_IN_ID:=t_ch_invoice.FieldByName('发票号码').AsString; tmr_UPDINV.Enabled:=false; //触发查询 旧 询发票号、是否打印、是否作废、作废时间,并更新post。 end; end; end; procedure Tfrm_ch_invoice.UPDINV(IN_ID: string); begin qry_UPDINV.Close; qry_UPDINV.Parameters.ParamByName('IN_ID').Value:=t_ch_invoice.FieldByName('IN_ID').AsString; qry_UPDINV.Open; if (DBEdit16.Text<>qry_UPDINV.FieldByName('发票号码').AsString) or (bsSkinDBCheckRadioBox3.Checked<>qry_UPDINV.FieldByName('是否打印').AsBoolean) or (bsSkinDBCheckRadioBox2.Checked<>qry_UPDINV.FieldByName('是否废除').AsBoolean) then begin //t_ch_invoice.Edit; //t_ch_invoice.FieldByName('发票号码').Value:=qry_UPDINV.FieldByName('发票号码').AsString; //t_ch_invoice.FieldByName('是否打印').Value:=qry_UPDINV.FieldByName('是否打印').AsString; //t_ch_invoice.FieldByName('是否废除').Value:=qry_UPDINV.FieldByName('是否废除').AsString; //t_ch_invoice.post; DBEdit16.Text:=qry_UPDINV.FieldByName('发票号码').AsString; bsSkinDBCheckRadioBox3.Checked:=qry_UPDINV.FieldByName('是否打印').AsBoolean; bsSkinDBCheckRadioBox2.Checked:=qry_UPDINV.FieldByName('是否废除').AsBoolean; end; end; procedure Tfrm_ch_invoice.tmr_UPDINVTimer(Sender: TObject); var _OLD_FPH,_NEW_FPH,_OLD_FC,_NEW_FC:string; //旧发票号 新发票号 begin //_OLD_FPH := t_ch_invoice.FieldByName('发票号码').AsString; //_OLD_FC := t_ch_invoice.FieldByName('是否废除').AsString; UPDINV(t_ch_invoice.FieldByName('IN_ID').AsString); //_NEW_FPH := t_ch_invoice.FieldByName('发票号码').AsString; //_NEW_FC := t_ch_invoice.FieldByName('是否废除').AsString; if (DBEdit16.Text='') then begin if (t_ch_invoice.FieldByName('发票号码').AsString<>DBEdit16.Text) then begin tmr_UPDINV.enabled:= False; end else if (t_ch_invoice.FieldByName('是否废除').asboolean<>bsSkinDBCheckRadioBox2.Checked) then begin tmr_UPDINV.enabled:= False; end; end else begin tmr_UPDINV.enabled:= False; end; end; /// /// 设置银行流水匹配按钮的状态 /// procedure Tfrm_ch_invoice.setBankflowButtonState(); begin bsknpnl1_bankflow.visible:=false; if(m_bankflowRight=false) then exit; // bsknpnl1_bankflow.Visible:=True; if( t_ch_invoice.FieldByName('是否匹配银行流水').AsBoolean) then begin btn4_bankflow.Enabled := not ( t_ch_invoice.FieldByName('匹配流水日期').IsNull); btn4_bankflow.Caption:='取消[银行流水手动匹配]'; btn4_bankflow.Tag:=0; end else begin btn4_bankflow.Enabled := true; btn4_bankflow.Caption:=' 银行流水手动匹配 '; btn4_bankflow.Tag:=1; end; end; procedure Tfrm_ch_invoice.dxDBGrid1ChangeNode(Sender: TObject; OldNode, Node: TdxTreeListNode); begin setBankflowButtonState(); end; procedure Tfrm_ch_invoice.btn4_bankflowClick(Sender: TObject); var strinfo:string; blpp:boolean; begin // if(btn4_bankflow.Tag=0) then strinfo:='您将取消发票的手动匹配银行流水,是否继续?' else strinfo:='您将对未匹配银行流水的发票的进行手动匹配,是否继续?'; if(Application.MessageBox(PChar(strinfo),'手动匹配',MB_YESNO+mb_iconwarning)<>id_yes) then Exit; try t_ch_invoice.Edit; if btn4_bankflow.Tag=1 then blpp:=True else blpp:=False; t_ch_invoice.FieldByName('是否匹配银行流水').AsBoolean := blpp; t_ch_invoice.FieldByName('匹配流水人').asstring:= employee; t_ch_invoice.FieldByName('匹配流水日期').asDatetime:= GetDbDatetime; t_ch_invoice.Post(); except on ex:Exception do begin strinfo:='发票信息更改匹配流水状态出错:'+ex.Message; errorlog(strinfo); Application.MessageBox(PChar(strinfo),'错误信息',MB_ICONWARNING) ; end; end; end; procedure Tfrm_ch_invoice.bsSkinButton37Click(Sender: TObject); begin if t_ch_invoice.IsEmpty then exit; if t_ch_invoice.FieldByName('对帐编号').AsString='' then exit; t_ch_invoice_expitem.Close; t_ch_invoice_expitem.Open; if t_ch_invoice_expitem.RecordCount=0 then begin application.MessageBox('不存在发票单开明细!','警告:',MB_OKCANCEL); t_ch_invoice_expitem.Close; exit; end; t_ch_invoice_expitem.Close; try frm_ch_invoice_expitems:=tfrm_ch_invoice_expitems.Create (application); invduino:=t_ch_invoice.fieldbyname('对帐编号').asstring; invcurr:=t_ch_invoice.fieldbyname('币别').asstring; frm_ch_invoice_expitems.ShowModal; finally frm_ch_invoice_expitems.Free; end; end; procedure Tfrm_ch_invoice.expduiINV(exptype:Integer); var str:Tstringlist; StrAmt,path,feename,amount,NAME,SH,DZ,ZH,spbm,FPTT,ScriptPath:string; USDAMT,RMBAMT:Double; i:Integer; begin ScriptPath:=ExtractFilePath(ParamStr(0))+'INVEXP\'; if not DirectoryExists(ScriptPath) then CreateDir(ScriptPath); t_ch_invoice_expitem.Close; t_ch_invoice_expitem.Open; USDAMT:=0; RMBAMT:=0; try str:=Tstringlist.Create; str.Clear; str.Add(''); str.Add(''); str.Add('2.0');//56 str.Add(''); // str.Add('1'); str.Add(''+inttostr(t_ch_invoice_expitem.RecordCount)+''); //此文件含有的单据信息数量 str.Add(''); t_ch_invoice_expitem.First; i:=1; while not t_ch_invoice_expitem.Eof do begin str.Add(''); str.Add(''+t_ch_invoice.FieldByName('申请编号').AsString+inttostr(i)+''); //单据号(20字节) FPTT:=trim(t_ch_invoice_expitem.FieldByName('发票抬头').AsString); str.Add(''+FPTT+''); //购方名称(100字节) //showmessage(IntToStr(kbmMemTable1.RecordCount)); if kbmMemTable1.Locate('NAME',FPTT,[]) then begin NAME:=kbmMemTable1.fieldbyname('NAME').AsString; SH:=kbmMemTable1.fieldbyname('SH').AsString; DZ:=kbmMemTable1.fieldbyname('DZ').AsString; ZH:=kbmMemTable1.fieldbyname('ZH').AsString; str.Add(''+SH+''); //购方税号 str.Add(''+trim(StringReplace(ZH,'#|#',' ',[]))+''); //购方银行账号(100字节) str.Add(''+trim(DZ)+''); //购方地址电话(100字节) end else begin showmessage('客户的名称:'+FPTT+'没有录入税控系统,或导出的客户编码不是最新的。' +#13#10+'请检查该客户是否已经录入税控系统,并从税控系统中重新导出客户编码.txt放入税控软件\税号\bin文件夹内。'); exit; end; if t_ch_invoice_expitem.FieldByName('币别').AsString='USD' THEN str.Add(''+'USD'+floattostr(t_ch_invoice_expitem.fieldbyname('金额').AsFloat)+'*'+floattostr(GetUsdExrate(t_ch_invoice.FieldByName('开票日期').AsString))+' 此票限付美元'+t_ch_invoice_expitem.FieldByName('备注').AsString+' ') else str.Add(''+t_ch_invoice_expitem.FieldByName('备注').AsString+' '); str.Add('崔凤琴'); //复核人(8字节) str.Add('崔文飞'); //收款人(8字节) feename:=trim(t_ch_invoice_expitem.FieldByName('费用名称').AsString); amount:= DBSumLower.Text; if kbmMemTable2.Locate('FEENAME',feename,[]) then begin str.Add(''+kbmMemTable2.FieldByName('Spbmbbh').AsString+''); //商品编码版本号 if (kbmMemTable2.FieldByName('Hsbz').AsString='True') then str.Add('1') //含税标志 else str.Add('0') end else begin showmessage('缺少费用代码'); exit; end; str.Add(''); str.Add(''); str.Add('1'); //序号 str.Add(''+feename+''); { if t_ch_invoice.FieldByName('币别').AsString='USD' THEN begin str.Add(''+t_ch_invoice.FieldByName('费用列表').AsString+''); //商品名称,金额为负数时此项为折扣行数 end else begin str.Add('代理运杂费'); //商品名称,金额为负数时此项为折扣行数 end; } str.Add(' '); ////规格型号(40字节) str.Add(''); //计量单位(32字节) if kbmMemTable2.Locate('FEENAME',feename,[]) then begin spbm:=kbmMemTable2.FieldByName('GoodsTaxNo').AsString; while Length(spbm)<19 do begin spbm:=spbm+'0'; end; str.Add(''+spbm+''); //商品编码 str.Add(''+kbmMemTable2.FieldByName('CropGoodsNo').AsString+''); //企业商品编码 end else begin showmessage('缺少费用代码'); exit; end; str.Add('1'); //优惠政策标识 str.Add('1'); //零税率标识 str.Add(''); //优惠政策说明 StrAmt:=FloatToStr(GetUsdExrate(t_ch_invoice.FieldByName('开票日期').AsString)*t_ch_invoice_expitem.FieldByName('金额').AsFloat); if t_ch_invoice_expitem.FieldByName('币别').AsString='USD' THEN begin str.Add(''+StrAmt+''); //单价 str.Add('1'); //数量 str.Add(''+StrAmt+''); //金额,当金额为负数时为折扣行 str.Add('0'); //税率 end else begin str.Add(''+t_ch_invoice_expitem.FieldByName('金额').AsString+''); //单价 str.Add('1'); //数量 str.Add(''+t_ch_invoice_expitem.FieldByName('金额').AsString+''); //金额,当金额为负数时为折扣行 str.Add('0'); //税率 end; str.Add('0'); //数量 str.Add(''); str.Add(''); str.Add(''); i:=i+1; if t_ch_invoice_expitem.FieldByName('币别').AsString='USD' THEN begin USDAMT:=USDAMT+t_ch_invoice_expitem.FieldByName('金额').AsFloat; end else begin RMBAMT:=RMBAMT+t_ch_invoice_expitem.FieldByName('金额').AsFloat; end; t_ch_invoice_expitem.Next; end; str.Add(''); str.Add(''); str.Add(''); // if (exptype=1) then begin str.SaveToFile(ScriptPath +t_ch_invoice.FieldByName('发票号码').AsString +FormatDateTime('yyyy',now) +FormatDateTime('mm',now) +FormatDateTime('dd',now) +FormatDateTime('hh',now) +FormatDateTime('nn',now)+'.XML'); ShowMessage('文件生成成功,共开出'+IntToStr(i)+'张发票,合计金额 美元:'+FloatToStr(USDAMT)+',人民币:'+FloatToStr(RMBAMT)); end else begin SaveDialog1.FileName:=t_ch_invoice.FieldByName('发票号码').AsString; if SaveDialog1.Execute then begin str.SaveToFile(SaveDialog1.FileName+'.XML'); ShowMessage('文件生成成功,共开出'+IntToStr(i)+'张发票,合计金额 美元:'+FloatToStr(USDAMT)+',人民币:'+FloatToStr(RMBAMT)); end else begin showmessage('文件生成失败!'); exit; end; end; finally t_ch_invoice_expitem.Close; FreeAndNil(Str); end; end; procedure Tfrm_ch_invoice.bsSkinButton34Click(Sender: TObject); var str:Tstringlist; StrAmt,path,feename,amount,NAME,SH,DZ,ZH,spbm,FPTT,ScriptPath:string; i:Integer; begin if dxDBGrid1.SelectedCount>0 then begin for i:=0 to dxDBGrid1.SelectedCount-1 do begin t_ch_invoice.GotoBookmark(pointer(dxDBGrid1.selectedrows[i])); if bsSkinCheckRadioBox1.Checked then expDZINV(1) else expINV(1); end; end else begin if bsSkinCheckRadioBox1.Checked then expDZINV(1) else expINV(1); end; end; procedure Tfrm_ch_invoice.expINV(exptype: Integer); var str:Tstringlist; StrAmt,path,feename,amount,NAME,SH,DZ,ZH,spbm,FPTT,ScriptPath:string; begin ScriptPath:=ExtractFilePath(ParamStr(0))+'INVEXP\'; if not DirectoryExists(ScriptPath) then CreateDir(ScriptPath); t_ch_invoice_expitem.Close; t_ch_invoice_expitem.Open; if t_ch_invoice_expitem.RecordCount>0 then begin if MessageDlg('该发票存在单开明细,确认按照单开明细导出吗?',mtWarning,[mbYes,mbNo],0)=mrYes then begin t_ch_invoice_expitem.close; expduiINV(exptype); end; Exit; end; t_ch_invoice_expitem.close; try str:=Tstringlist.Create; str.Clear; str.Add(''); str.Add(''); str.Add('2.0');//56 str.Add(''); str.Add('1'); str.Add('1'); //此文件含有的单据信息数量 str.Add(''); str.Add(''); str.Add(''+t_ch_invoice.FieldByName('申请编号').AsString+''); //单据号(20字节) FPTT:=trim(t_ch_invoice.FieldByName('发票抬头').AsString); str.Add(''+FPTT+''); //购方名称(100字节) //showmessage(IntToStr(kbmMemTable1.RecordCount)); if kbmMemTable1.Locate('NAME',FPTT,[]) then begin NAME:=kbmMemTable1.fieldbyname('NAME').AsString; SH:=kbmMemTable1.fieldbyname('SH').AsString; DZ:=kbmMemTable1.fieldbyname('DZ').AsString; ZH:=kbmMemTable1.fieldbyname('ZH').AsString; str.Add(''+SH+''); //购方税号 str.Add(''+trim(StringReplace(ZH,'#|#',' ',[]))+''); //购方银行账号(100字节) str.Add(''+trim(DZ)+''); //购方地址电话(100字节) end else begin showmessage('客户的名称没有录入税控系统,或导出的客户编码不是最新的。' +#13#10+'请检查该客户是否已经录入税控系统,并从税控系统中重新导出客户编码.txt放入税控软件\税号\bin文件夹内。'); exit; end; str.Add(''+t_ch_invoice.FieldByName('备注').AsString+''); //备注(240字节) str.Add('崔凤琴'); //复核人(8字节) str.Add('崔文飞'); //收款人(8字节) feename:= DM_CostType.Lines[0]; amount:= DBSumLower.Text; if kbmMemTable2.Locate('FEENAME',feename,[]) then begin str.Add(''+kbmMemTable2.FieldByName('Spbmbbh').AsString+''); //商品编码版本号 if (kbmMemTable2.FieldByName('Hsbz').AsString='True') then str.Add('1') //含税标志 else str.Add('0') end else begin showmessage('缺少费用代码'); exit; end; str.Add(''); str.Add(''); str.Add('1'); //序号 str.Add(''+feename+''); { if t_ch_invoice.FieldByName('币别').AsString='USD' THEN begin str.Add(''+t_ch_invoice.FieldByName('费用列表').AsString+''); //商品名称,金额为负数时此项为折扣行数 end else begin str.Add('代理运杂费'); //商品名称,金额为负数时此项为折扣行数 end; } str.Add(' '); ////规格型号(40字节) str.Add(''); //计量单位(32字节) if kbmMemTable2.Locate('FEENAME',feename,[]) then begin spbm:=kbmMemTable2.FieldByName('GoodsTaxNo').AsString; while Length(spbm)<19 do begin spbm:=spbm+'0'; end; str.Add(''+spbm+''); //商品编码 str.Add(''+kbmMemTable2.FieldByName('CropGoodsNo').AsString+''); //企业商品编码 end else begin showmessage('缺少费用代码'); exit; end; str.Add('1'); //优惠政策标识 str.Add('1'); //零税率标识 str.Add(''); //优惠政策说明 StrAmt:=FloatToStr(GetUsdExrate(t_ch_invoice.FieldByName('开票日期').AsString)*t_ch_invoice.FieldByName('金额列表').AsFloat); if t_ch_invoice.FieldByName('币别').AsString='USD' THEN begin str.Add(''+StrAmt+''); //单价 str.Add('1'); //数量 str.Add(''+StrAmt+''); //金额,当金额为负数时为折扣行 str.Add('0'); //税率 end else begin str.Add(''+t_ch_invoice.FieldByName('金额列表').AsString+''); //单价 str.Add('1'); //数量 str.Add(''+t_ch_invoice.FieldByName('金额列表').AsString+''); //金额,当金额为负数时为折扣行 str.Add('0'); //税率 end; str.Add('0'); //数量 str.Add(''); str.Add(''); str.Add(''); str.Add(''); str.Add(''); str.Add(''); // if (exptype=1) then begin str.SaveToFile(ScriptPath +t_ch_invoice.FieldByName('发票号码').AsString +FormatDateTime('yyyy',now) +FormatDateTime('mm',now) +FormatDateTime('dd',now) +FormatDateTime('hh',now) +FormatDateTime('nn',now)+'.XML'); end else begin SaveDialog1.FileName:=t_ch_invoice.FieldByName('发票号码').AsString; if SaveDialog1.Execute then begin str.SaveToFile(SaveDialog1.FileName+'.XML'); showmessage('文件生成成功!'); end else begin showmessage('文件生成失败!'); exit; end; end; finally FreeAndNil(Str); end; end; procedure Tfrm_ch_invoice.expDZduiINV(exptype: Integer); var str:Tstringlist; StrAmt,path,feename,amount,NAME,SH,DZ,ZH,spbm,FPTT,ScriptPath:string; i:Integer; aQuery,aQuery2:TADOQuery; begin ScriptPath:=ExtractFilePath(ParamStr(0))+'DZINVEXP\'; if not DirectoryExists(ScriptPath) then CreateDir(ScriptPath); t_ch_invoice_expitem.Close; t_ch_invoice_expitem.Open; aQuery:=CreateAdoQuery; aQuery2:=CreateAdoQuery; try str:=Tstringlist.Create; str.Clear; str.Add(''); str.Add(''); aQuery.Close; aQuery.SQL.Clear; aQuery.SQL.Add('select top 1 * from t_sys_company'); aQuery.Open; t_ch_invoice_expitem.First; i:=1; while not t_ch_invoice_expitem.Eof do begin str.Add('');//56 str.Add('');//56 str.Add(''+t_ch_invoice.FieldByName('申请编号').AsString+inttostr(i)+''); //单据号(20字节) str.Add('0'); str.Add('33.0'); str.Add(''+aQuery.fieldbyname('税务登记号').AsString+''); //购方税号 str.Add(''+aQuery.fieldbyname('全称').AsString+''); //购方税号 str.Add(''+aQuery.fieldbyname('地址').AsString+aQuery.fieldbyname('电话').AsString+''); //购方税号 aQuery2.Close; aQuery2.SQL.Clear; aQuery2.SQL.Add('select top 1 * from t_sys_bank where 币别='''+t_ch_invoice.FieldByName('币别').AsString+''''); aQuery2.Open; if (not aQuery2.IsEmpty) then str.Add(''+aQuery2.fieldbyname('银行名称').AsString+aQuery2.fieldbyname('银行账号').AsString+'') //购方税号 else str.Add(''); //购方税号 FPTT:=trim(t_ch_invoice_expitem.FieldByName('发票抬头').AsString); //showmessage(IntToStr(kbmMemTable1.RecordCount)); if kbmMemTable1.Locate('NAME',FPTT,[]) then begin NAME:=kbmMemTable1.fieldbyname('NAME').AsString; SH:=kbmMemTable1.fieldbyname('SH').AsString; DZ:=kbmMemTable1.fieldbyname('DZ').AsString; ZH:=kbmMemTable1.fieldbyname('ZH').AsString; if (Pos('#|#',ZH)>0) then begin if t_ch_invoice.FieldByName('币别').AsString='USD' THEN begin ZH:=Copy(ZH,Pos('#|#',ZH)+3,Length(ZH)-Pos('#|#',ZH)-2); end else begin ZH:=Copy(ZH,0,Pos('#|#',ZH)-1); end; end; str.Add(''+SH+''); //购方税号 str.Add(''+FPTT+''); //购方名称(100字节) str.Add(''+trim(DZ)+''); //购方地址电话(100字节) str.Add(''+ZH+''); //购方银行账号(100字节) end else begin showmessage('客户的名称:'+FPTT+'没有录入税控系统,或导出的客户编码不是最新的。' +#13#10+'请检查该客户是否已经录入税控系统,并从税控系统中重新导出客户编码.txt放入税控软件\税号\bin文件夹内。'); exit; end; str.Add(''+t_ch_invoice.FieldByName('制单人').AsString+''); //复核人(8字节) str.Add('崔文飞'); //收款人(8字节) str.Add('崔凤琴'); //复核人(8字节) str.Add(''); //复核人(8字节) str.Add(''); if t_ch_invoice_expitem.FieldByName('币别').AsString='USD' THEN StrAmt:=FloatToStr(GetUsdExrate(t_ch_invoice.FieldByName('开票日期').AsString)*t_ch_invoice_expitem.FieldByName('金额').AsFloat) else StrAmt:=t_ch_invoice_expitem.FieldByName('金额').AsString; str.Add(''+StrAmt+''); str.Add(''+StrAmt+''); //复核人(8字节) str.Add('0'); //复核人(8字节) feename:=trim(t_ch_invoice_expitem.FieldByName('费用名称').AsString); amount:= DBSumLower.Text; if kbmMemTable2.Locate('FEENAME',feename,[]) then begin { if (kbmMemTable2.FieldByName('Hsbz').AsString='True') then str.Add('1') //含税标志 else } str.Add('0') end else begin showmessage('缺少费用代码'); exit; end; if t_ch_invoice_expitem.FieldByName('币别').AsString='USD' THEN str.Add(''+'USD'+floattostr(t_ch_invoice_expitem.fieldbyname('金额').AsFloat)+'*'+floattostr(GetUsdExrate(t_ch_invoice.FieldByName('开票日期').AsString))+' 此票限付美元'+t_ch_invoice_expitem.FieldByName('备注').AsString+' ') else str.Add(''+t_ch_invoice_expitem.FieldByName('备注').AsString+' '); str.Add(''); str.Add(''); str.Add(''); str.Add('0'); //序号 if kbmMemTable2.Locate('FEENAME',feename,[]) then begin spbm:=kbmMemTable2.FieldByName('GoodsTaxNo').AsString; while Length(spbm)<19 do begin spbm:=spbm+'0'; end; str.Add(''+spbm+''); //商品编码 str.Add(''+spbm+''); //商品编码 // str.Add(''+kbmMemTable2.FieldByName('CropGoodsNo').AsString+''); //企业商品编码 end else begin showmessage('缺少费用代码'); exit; end; str.Add('1'); //优惠政策标识 str.Add('1'); //零税率标识 str.Add(''); //优惠政策说明 str.Add(''+feename+''); str.Add(''); ////规格型号(40字节) str.Add(''); str.Add('1'); //数量 str.Add(''+StrAmt+''); //单价 str.Add(''+StrAmt+''); //金额,当金额为负数时为折扣行 str.Add('0'); //税率 str.Add('0'); //税率 str.Add('0'); //数量 str.Add(''); str.Add(''); str.Add(''); i:=i+1; t_ch_invoice_expitem.Next; end; str.Add(''); // if (exptype=1) then begin str.SaveToFile(ScriptPath +t_ch_invoice.FieldByName('发票号码').AsString +FormatDateTime('yyyy',now) +FormatDateTime('mm',now) +FormatDateTime('dd',now) +FormatDateTime('hh',now) +FormatDateTime('nn',now)+'.XML'); end else begin SaveDialog1.FileName:=t_ch_invoice.FieldByName('发票号码').AsString; if SaveDialog1.Execute then begin str.SaveToFile(SaveDialog1.FileName+'.XML'); showmessage('文件生成成功!'); end else begin showmessage('文件生成失败!'); exit; end; end; finally t_ch_invoice_expitem.Close; FreeAndNil(Str); FreeAndNil(aQuery); FreeAndNil(aQuery2); end; end; procedure Tfrm_ch_invoice.expDZINV(exptype: Integer); var str:Tstringlist; StrAmt,path,feename,amount,NAME,SH,DZ,ZH,spbm,FPTT,ScriptPath:string; aQuery:TADOQuery; begin ScriptPath:=ExtractFilePath(ParamStr(0))+'INVDZEXP\'; if not DirectoryExists(ScriptPath) then CreateDir(ScriptPath); t_ch_invoice_expitem.Close; t_ch_invoice_expitem.Open; if t_ch_invoice_expitem.RecordCount>0 then begin if MessageDlg('该发票存在单开明细,确认按照单开明细导出吗?',mtWarning,[mbYes,mbNo],0)=mrYes then begin t_ch_invoice_expitem.close; expDZduiINV(exptype); end; Exit; end; t_ch_invoice_expitem.close; aQuery:=CreateAdoQuery; try str:=Tstringlist.Create; str.Clear; str.Add(''); str.Add(''); str.Add(''); str.Add(''); str.Add(''+t_ch_invoice.FieldByName('申请编号').AsString+''); //单据号(20字节) str.Add('0'); str.Add('33.0'); aQuery.Close; aQuery.SQL.Clear; aQuery.SQL.Add('select top 1 * from t_sys_company'); aQuery.Open; str.Add(''+aQuery.fieldbyname('税务登记号').AsString+''); //购方税号 str.Add(''+aQuery.fieldbyname('全称').AsString+''); //购方税号 str.Add(''+aQuery.fieldbyname('地址').AsString+aQuery.fieldbyname('电话').AsString+''); //购方税号 aQuery.Close; aQuery.SQL.Clear; aQuery.SQL.Add('select top 1 * from t_sys_bank where 币别='''+t_ch_invoice.FieldByName('币别').AsString+''''); aQuery.Open; if (not aQuery.IsEmpty) then str.Add(''+aQuery.fieldbyname('银行名称').AsString+aQuery.fieldbyname('银行账号').AsString+'') //购方税号 else str.Add(''); //购方税号 FPTT:=trim(t_ch_invoice.FieldByName('发票抬头').AsString); //showmessage(IntToStr(kbmMemTable1.RecordCount)); if kbmMemTable1.Locate('NAME',FPTT,[]) then begin NAME:=kbmMemTable1.fieldbyname('NAME').AsString; SH:=kbmMemTable1.fieldbyname('SH').AsString; DZ:=kbmMemTable1.fieldbyname('DZ').AsString; ZH:=kbmMemTable1.fieldbyname('ZH').AsString; if (Pos('#|#',ZH)>0) then begin if t_ch_invoice.FieldByName('币别').AsString='USD' THEN begin ZH:=Copy(ZH,Pos('#|#',ZH)+3,Length(ZH)-Pos('#|#',ZH)-2); end else begin ZH:=Copy(ZH,0,Pos('#|#',ZH)-1); end; end; str.Add(''+SH+''); //购方税号 str.Add(''+FPTT+''); //购方名称(100字节) str.Add(''+trim(DZ)+''); //购方地址电话(100字节) str.Add(''+ZH+''); //购方银行账号(100字节) end else begin showmessage('客户的名称没有录入税控系统,或导出的客户编码不是最新的。' +#13#10+'请检查该客户是否已经录入税控系统,并从税控系统中重新导出客户编码.txt放入税控软件\税号\bin文件夹内。'); exit; end; str.Add(''+t_ch_invoice.FieldByName('制单人').AsString+''); //复核人(8字节) str.Add('崔文飞'); //收款人(8字节) str.Add('崔凤琴'); //复核人(8字节) str.Add(''); //复核人(8字节) str.Add(''); if t_ch_invoice.FieldByName('币别').AsString='USD' THEN StrAmt:=FloatToStr(GetUsdExrate(t_ch_invoice.FieldByName('开票日期').AsString)*t_ch_invoice.FieldByName('金额列表').AsFloat) else StrAmt:=t_ch_invoice.FieldByName('金额列表').AsString; str.Add(''+StrAmt+''); str.Add(''+StrAmt+''); //复核人(8字节) str.Add('0'); feename:= DM_CostType.Lines[0]; amount:= DBSumLower.Text; if kbmMemTable2.Locate('FEENAME',feename,[]) then begin // str.Add(''+kbmMemTable2.FieldByName('Spbmbbh').AsString+''); //商品编码版本号 { if (kbmMemTable2.FieldByName('Hsbz').AsString='True') then str.Add('1') //含税标志 else } str.Add('0') end else begin showmessage('缺少费用代码文件'); exit; end; str.Add(''+t_ch_invoice.FieldByName('备注').AsString+''); //备注(240字节) str.Add(''); str.Add(''); str.Add(''); str.Add('0'); if kbmMemTable2.Locate('FEENAME',feename,[]) then begin spbm:=kbmMemTable2.FieldByName('GoodsTaxNo').AsString; while Length(spbm)<19 do begin spbm:=spbm+'0'; end; str.Add(''+spbm+''); //商品编码 str.Add(''+spbm+''); //商品编码 end else begin showmessage('缺少费用代码'); exit; end; str.Add('1'); //优惠政策标识 str.Add('1'); //零税率标识 str.Add(''); //优惠政策说明 str.Add(''+feename+''); str.Add(''); ////规格型号(40字节) str.Add(''); str.Add('1'); //数量 str.Add(''+StrAmt+''); //单价 str.Add(''+StrAmt+''); //金额,当金额为负数时为折扣行 str.Add('0'); //税率 str.Add('0'); str.Add('0'); //数量 str.Add(''); str.Add(''); str.Add(''); str.Add(''); // if (exptype=1) then begin str.SaveToFile(ScriptPath +t_ch_invoice.FieldByName('发票号码').AsString +FormatDateTime('yyyy',now) +FormatDateTime('mm',now) +FormatDateTime('dd',now) +FormatDateTime('hh',now) +FormatDateTime('nn',now)+'.XML'); end else begin SaveDialog1.FileName:=t_ch_invoice.FieldByName('发票号码').AsString; if SaveDialog1.Execute then begin str.SaveToFile(SaveDialog1.FileName+'.XML'); showmessage('文件生成成功!'); end else begin showmessage('文件生成失败!'); exit; end; end; finally FreeAndNil(Str); FreeAndNil(aQuery); end; end; procedure Tfrm_ch_invoice.bsSkinButton39Click(Sender: TObject); begin expDZINV(0) end; procedure Tfrm_ch_invoice.expDZEXCELINV(exptype: Integer); var xlstest, thesheet,thesheetdetail:Variant; j,i,selectcount:integer; SH,DZ,ZH,BANK,ACCOUNT,StrAmt,spbm,feename,ScriptPath,str_file:string; function getnumstr(num:string;Len:Integer):string; begin while Length(num)0 then begin for i:=0 to dxDBGrid1.SelectedCount-1 do begin t_ch_invoice.GotoBookmark(pointer(dxDBGrid1.selectedrows[i])); t_ch_invoice_expitem.Close; t_ch_invoice_expitem.Open; if t_ch_invoice_expitem.RecordCount>0 then begin t_ch_invoice_expitem.First; while not t_ch_invoice_expitem.Eof do begin thesheet.cells.item[j,1]:=t_ch_invoice.FieldByName('申请编号').AsString+getnumstr(IntToStr(j),3); if (t_ch_invoice.FieldByName('发票类型').AsString='增值税专票') then thesheet.cells.item[j,2]:='增值税专用发票' else thesheet.cells.item[j,2]:='普通发票'; thesheet.cells.item[j,4]:='否'; thesheet.cells.item[j,6]:=trim(t_ch_invoice_expitem.FieldByName('发票抬头').AsString); if kbmMemTable1.Locate('NAME;BB',VarArrayOf([trim(t_ch_invoice_expitem.FieldByName('发票抬头').AsString),t_ch_invoice_expitem.FieldByName('币别').AsString]),[]) then begin SH:=kbmMemTable1.fieldbyname('SH').AsString; DZ:=kbmMemTable1.fieldbyname('DZ').AsString; ZH:=kbmMemTable1.fieldbyname('ZH').AsString; if (Pos('#|#',ZH)>0) then begin ZH:=Copy(ZH,Pos('#|#',ZH)+3,Length(ZH)-Pos('#|#',ZH)-2); end; if (Pos(' ',ZH)>0) then begin BANK:=Copy(ZH,0,Pos(' ',ZH)-1); ACCOUNT:=StringReplace(ZH,BANK,'',[]); end else begin BANK:=ZH; ACCOUNT:=''; end; thesheet.cells.item[j,8]:=kbmMemTable1.fieldbyname('SH').AsString; thesheet.cells.item[j,9]:=kbmMemTable1.fieldbyname('DZ').AsString; thesheet.cells.item[j,11]:=BANK; thesheet.cells.item[j,12]:=ACCOUNT; end else if kbmMemTable1.Locate('NAME',trim(t_ch_invoice_expitem.FieldByName('发票抬头').AsString),[]) then begin SH:=kbmMemTable1.fieldbyname('SH').AsString; DZ:=kbmMemTable1.fieldbyname('DZ').AsString; ZH:=kbmMemTable1.fieldbyname('ZH').AsString; if (Pos('#|#',ZH)>0) then begin ZH:=Copy(ZH,Pos('#|#',ZH)+3,Length(ZH)-Pos('#|#',ZH)-2); end; if (Pos(' ',ZH)>0) then begin BANK:=Copy(ZH,0,Pos(' ',ZH)-1); ACCOUNT:=StringReplace(ZH,BANK,'',[]); end else begin BANK:=ZH; ACCOUNT:=''; end; thesheet.cells.item[j,8]:=kbmMemTable1.fieldbyname('SH').AsString; thesheet.cells.item[j,9]:=kbmMemTable1.fieldbyname('DZ').AsString; thesheet.cells.item[j,11]:=BANK; thesheet.cells.item[j,12]:=ACCOUNT; end else begin showmessage('客户的名称:'+trim(t_ch_invoice_expitem.FieldByName('发票抬头').AsString)+' 在客户资料中不存在,请重新录入。'); exit; end; if t_ch_invoice_expitem.FieldByName('币别').AsString='USD' THEN thesheet.cells.item[j,13]:='USD'+floattostr(t_ch_invoice_expitem.fieldbyname('金额').AsFloat)+'*'+floattostr(GetUsdExrate(t_ch_invoice.FieldByName('开票日期').AsString))+' 此票限付美元'+t_ch_invoice_expitem.FieldByName('备注').AsString else thesheet.cells.item[j,13]:=t_ch_invoice_expitem.FieldByName('备注').AsString; thesheet.cells.item[j,14]:='是'; ADOQuery5.Close; ADOQuery5.SQL.Clear; ADOQuery5.SQL.Add('select top 1 * from t_sys_bank where 币别='''+t_ch_invoice.FieldByName('币别').AsString+''''); ADOQuery5.Open; if (not ADOQuery5.IsEmpty) then begin thesheet.cells.item[j,15]:=ADOQuery5.fieldbyname('银行名称').AsString; thesheet.cells.item[j,16]:=ADOQuery5.fieldbyname('银行账号').AsString; thesheet.cells.item[j,17]:='是'; end; if (t_ch_invoice_expitem.FieldByName('接收发票邮箱').AsString<>'') then begin thesheet.cells.item[j,18]:=t_ch_invoice_expitem.FieldByName('接收发票邮箱').AsString; end else begin if (t_ch_invoice.FieldByName('推送邮箱').AsString='') then begin if frm_data_share.t_crm_client_all.Locate('客户简称',trim(t_ch_invoice.FieldByName('客户名称').AsString),[]) then begin thesheet.cells.item[j,18]:=frm_data_share.t_crm_client_all.FieldByName('接收发票邮箱').AsString;; end; end else thesheet.cells.item[j,18]:=t_ch_invoice.FieldByName('推送邮箱').AsString; end; thesheet.cells.item[j,25]:='崔文飞'; thesheet.cells.item[j,26]:='崔凤琴'; thesheetdetail.cells.item[j,1]:=t_ch_invoice.FieldByName('申请编号').AsString+getnumstr(IntToStr(j),3); feename:=trim(t_ch_invoice_expitem.FieldByName('费用名称').AsString); thesheetdetail.cells.item[j,2]:=feename; if kbmMemTable2.Locate('FEENAME',feename,[]) then begin spbm:=kbmMemTable2.FieldByName('GoodsTaxNo').AsString; while Length(spbm)<19 do begin spbm:=spbm+'0'; end; thesheetdetail.cells.item[j,3]:=spbm; if (kbmMemTable2.FieldByName('TaxPre').AsString='1') then thesheetdetail.cells.item[j,11]:='是' else thesheetdetail.cells.item[j,11]:='否'; thesheetdetail.cells.item[j,12]:=kbmMemTable2.FieldByName('Spbmbbh').AsString; end else begin showmessage('缺少费用代码文件'); exit; end; if t_ch_invoice_expitem.FieldByName('币别').AsString='USD' THEN StrAmt:=FloatToStr(GetUsdExrate(t_ch_invoice.FieldByName('开票日期').AsString)*t_ch_invoice_expitem.FieldByName('金额').AsFloat) else StrAmt:=t_ch_invoice_expitem.FieldByName('金额').AsString; thesheetdetail.cells.item[j,5]:='票'; thesheetdetail.cells.item[j,6]:='1'; thesheetdetail.cells.item[j,7]:=StrAmt; thesheetdetail.cells.item[j,8]:=StrAmt; thesheetdetail.cells.item[j,9]:='0'; j:=j+1; t_ch_invoice_expitem.Next; end end else begin thesheet.cells.item[j,1]:=t_ch_invoice.FieldByName('申请编号').AsString; if (t_ch_invoice.FieldByName('发票类型').AsString='增值税专票') then thesheet.cells.item[j,2]:='增值税专用发票' else thesheet.cells.item[j,2]:='普通发票'; thesheet.cells.item[j,4]:='否'; thesheet.cells.item[j,6]:=trim(t_ch_invoice.FieldByName('发票抬头').AsString); if kbmMemTable1.Locate('NAME;BB',VarArrayOf([trim(t_ch_invoice.FieldByName('发票抬头').AsString),t_ch_invoice.FieldByName('币别').AsString]),[]) then begin SH:=kbmMemTable1.fieldbyname('SH').AsString; DZ:=kbmMemTable1.fieldbyname('DZ').AsString; ZH:=kbmMemTable1.fieldbyname('ZH').AsString; if (Pos('#|#',ZH)>0) then begin ZH:=Copy(ZH,Pos('#|#',ZH)+3,Length(ZH)-Pos('#|#',ZH)-2); end; if (Pos(' ',ZH)>0) then begin BANK:=Copy(ZH,0,Pos(' ',ZH)-1); ACCOUNT:=StringReplace(ZH,BANK,'',[]); end else begin BANK:=ZH; ACCOUNT:=''; end; thesheet.cells.item[j,8]:=kbmMemTable1.fieldbyname('SH').AsString; thesheet.cells.item[j,9]:=kbmMemTable1.fieldbyname('DZ').AsString; thesheet.cells.item[j,11]:=BANK; thesheet.cells.item[j,12]:=ACCOUNT; end else if kbmMemTable1.Locate('NAME',trim(t_ch_invoice.FieldByName('发票抬头').AsString),[]) then begin SH:=kbmMemTable1.fieldbyname('SH').AsString; DZ:=kbmMemTable1.fieldbyname('DZ').AsString; ZH:=kbmMemTable1.fieldbyname('ZH').AsString; if (Pos('#|#',ZH)>0) then begin ZH:=Copy(ZH,Pos('#|#',ZH)+3,Length(ZH)-Pos('#|#',ZH)-2); end; if (Pos(' ',ZH)>0) then begin BANK:=Copy(ZH,0,Pos(' ',ZH)-1); ACCOUNT:=StringReplace(ZH,BANK,'',[]); end else begin BANK:=ZH; ACCOUNT:=''; end; thesheet.cells.item[j,8]:=kbmMemTable1.fieldbyname('SH').AsString; thesheet.cells.item[j,9]:=kbmMemTable1.fieldbyname('DZ').AsString; thesheet.cells.item[j,11]:=BANK; thesheet.cells.item[j,12]:=ACCOUNT; end else begin showmessage('客户的名称:'+trim(t_ch_invoice.FieldByName('发票抬头').AsString)+' 在客户资料中不存在,请重新录入。'); exit; end; thesheet.cells.item[j,13]:=t_ch_invoice.FieldByName('备注').AsString; thesheet.cells.item[j,14]:='是'; ADOQuery5.Close; ADOQuery5.SQL.Clear; ADOQuery5.SQL.Add('select top 1 * from t_sys_bank where 币别='''+t_ch_invoice.FieldByName('币别').AsString+''''); ADOQuery5.Open; if (not ADOQuery5.IsEmpty) then begin thesheet.cells.item[j,15]:=ADOQuery5.fieldbyname('银行名称').AsString; thesheet.cells.item[j,16]:=ADOQuery5.fieldbyname('银行账号').AsString; thesheet.cells.item[j,17]:='是'; end; if (t_ch_invoice.FieldByName('推送邮箱').AsString='') then begin if frm_data_share.t_crm_client_all.Locate('客户简称',trim(t_ch_invoice.FieldByName('客户名称').AsString),[]) then begin thesheet.cells.item[j,18]:=frm_data_share.t_crm_client_all.FieldByName('接收发票邮箱').AsString; end; end else thesheet.cells.item[j,18]:=t_ch_invoice.FieldByName('推送邮箱').AsString; thesheet.cells.item[j,25]:='崔文飞'; thesheet.cells.item[j,26]:='崔凤琴'; thesheetdetail.cells.item[j,1]:=t_ch_invoice.FieldByName('申请编号').AsString; if t_ch_invoice.FieldByName('币别').AsString='USD' THEN begin thesheetdetail.cells.item[j,2]:=t_ch_invoice.FieldByName('费用列表').AsString; feename:= t_ch_invoice.FieldByName('费用列表').AsString; end else begin thesheetdetail.cells.item[j,2]:='代理运杂费'; feename:= '代理运杂费'; end; if kbmMemTable2.Locate('FEENAME',feename,[]) then begin spbm:=kbmMemTable2.FieldByName('GoodsTaxNo').AsString; while Length(spbm)<19 do begin spbm:=spbm+'0'; end; thesheetdetail.cells.item[j,3]:=spbm; if (kbmMemTable2.FieldByName('TaxPre').AsString='1') then thesheetdetail.cells.item[j,11]:='是' else thesheetdetail.cells.item[j,11]:='否'; thesheetdetail.cells.item[j,12]:=kbmMemTable2.FieldByName('Spbmbbh').AsString; end else begin showmessage('缺少费用代码'); exit; end; if t_ch_invoice.FieldByName('币别').AsString='USD' THEN StrAmt:=FloatToStr(GetUsdExrate(t_ch_invoice.FieldByName('开票日期').AsString)*t_ch_invoice.FieldByName('金额列表').AsFloat) else StrAmt:=t_ch_invoice.FieldByName('金额列表').AsString; thesheetdetail.cells.item[j,5]:='票'; thesheetdetail.cells.item[j,6]:='1'; thesheetdetail.cells.item[j,7]:=StrAmt; thesheetdetail.cells.item[j,8]:=StrAmt; thesheetdetail.cells.item[j,9]:='0'; j:=j+1; end; t_ch_invoice.Edit; t_ch_invoice.FieldByName('是否导出').AsBoolean:=true; t_ch_invoice.Post; selectcount:=selectcount+1; end; end else begin t_ch_invoice_expitem.Close; t_ch_invoice_expitem.Open; if t_ch_invoice_expitem.RecordCount>0 then begin t_ch_invoice_expitem.First; while not t_ch_invoice_expitem.Eof do begin thesheet.cells.item[j,1]:=t_ch_invoice.FieldByName('申请编号').AsString+getnumstr(IntToStr(j),3); if (t_ch_invoice.FieldByName('发票类型').AsString='增值税专票') then thesheet.cells.item[j,2]:='增值税专用发票' else thesheet.cells.item[j,2]:='普通发票'; thesheet.cells.item[j,4]:='否'; thesheet.cells.item[j,6]:=trim(t_ch_invoice_expitem.FieldByName('发票抬头').AsString); if kbmMemTable1.Locate('NAME;BB',VarArrayOf([trim(t_ch_invoice_expitem.FieldByName('发票抬头').AsString),t_ch_invoice_expitem.FieldByName('币别').AsString]),[]) then begin SH:=kbmMemTable1.fieldbyname('SH').AsString; DZ:=kbmMemTable1.fieldbyname('DZ').AsString; ZH:=kbmMemTable1.fieldbyname('ZH').AsString; if (Pos('#|#',ZH)>0) then begin ZH:=Copy(ZH,Pos('#|#',ZH)+3,Length(ZH)-Pos('#|#',ZH)-2); end; if (Pos(' ',ZH)>0) then begin BANK:=Copy(ZH,0,Pos(' ',ZH)-1); ACCOUNT:=StringReplace(ZH,BANK,'',[]); end else begin BANK:=ZH; ACCOUNT:=''; end; thesheet.cells.item[j,8]:=kbmMemTable1.fieldbyname('SH').AsString; thesheet.cells.item[j,9]:=kbmMemTable1.fieldbyname('DZ').AsString; thesheet.cells.item[j,11]:=BANK; thesheet.cells.item[j,12]:=ACCOUNT; end else if kbmMemTable1.Locate('NAME',trim(t_ch_invoice_expitem.FieldByName('发票抬头').AsString),[]) then begin SH:=kbmMemTable1.fieldbyname('SH').AsString; DZ:=kbmMemTable1.fieldbyname('DZ').AsString; ZH:=kbmMemTable1.fieldbyname('ZH').AsString; if (Pos('#|#',ZH)>0) then begin ZH:=Copy(ZH,Pos('#|#',ZH)+3,Length(ZH)-Pos('#|#',ZH)-2); end; if (Pos(' ',ZH)>0) then begin BANK:=Copy(ZH,0,Pos(' ',ZH)-1); ACCOUNT:=StringReplace(ZH,BANK,'',[]); end else begin BANK:=ZH; ACCOUNT:=''; end; thesheet.cells.item[j,8]:=kbmMemTable1.fieldbyname('SH').AsString; thesheet.cells.item[j,9]:=kbmMemTable1.fieldbyname('DZ').AsString; thesheet.cells.item[j,11]:=BANK; thesheet.cells.item[j,12]:=ACCOUNT; end else begin showmessage('客户的名称:'+trim(t_ch_invoice_expitem.FieldByName('发票抬头').AsString)+' 在客户资料中不存在,请重新录入。'); exit; end; if t_ch_invoice_expitem.FieldByName('币别').AsString='USD' THEN thesheet.cells.item[j,13]:='USD'+floattostr(t_ch_invoice_expitem.fieldbyname('金额').AsFloat)+'*'+floattostr(GetUsdExrate(t_ch_invoice.FieldByName('开票日期').AsString))+' 此票限付美元'+t_ch_invoice_expitem.FieldByName('备注').AsString else thesheet.cells.item[j,13]:=t_ch_invoice_expitem.FieldByName('备注').AsString; thesheet.cells.item[j,14]:='是'; ADOQuery5.Close; ADOQuery5.SQL.Clear; ADOQuery5.SQL.Add('select top 1 * from t_sys_bank where 币别='''+t_ch_invoice.FieldByName('币别').AsString+''''); ADOQuery5.Open; if (not ADOQuery5.IsEmpty) then begin thesheet.cells.item[j,15]:=ADOQuery5.fieldbyname('银行名称').AsString; thesheet.cells.item[j,16]:=ADOQuery5.fieldbyname('银行账号').AsString; thesheet.cells.item[j,17]:='是'; end; if (t_ch_invoice_expitem.FieldByName('接收发票邮箱').AsString<>'') then begin thesheet.cells.item[j,18]:=t_ch_invoice_expitem.FieldByName('接收发票邮箱').AsString; end else begin if (t_ch_invoice.FieldByName('推送邮箱').AsString='') then begin if frm_data_share.t_crm_client_all.Locate('客户简称',trim(t_ch_invoice.FieldByName('客户名称').AsString),[]) then begin thesheet.cells.item[j,18]:=frm_data_share.t_crm_client_all.FieldByName('接收发票邮箱').AsString; end; end else thesheet.cells.item[j,18]:=t_ch_invoice.FieldByName('推送邮箱').AsString; end; thesheet.cells.item[j,25]:='崔文飞'; thesheet.cells.item[j,26]:='崔凤琴'; thesheetdetail.cells.item[j,1]:=t_ch_invoice.FieldByName('申请编号').AsString+getnumstr(IntToStr(j),3); feename:=trim(t_ch_invoice_expitem.FieldByName('费用名称').AsString); thesheetdetail.cells.item[j,2]:=feename; if kbmMemTable2.Locate('FEENAME',feename,[]) then begin spbm:=kbmMemTable2.FieldByName('GoodsTaxNo').AsString; while Length(spbm)<19 do begin spbm:=spbm+'0'; end; thesheetdetail.cells.item[j,3]:=spbm; if (kbmMemTable2.FieldByName('TaxPre').AsString='1') then thesheetdetail.cells.item[j,11]:='是' else thesheetdetail.cells.item[j,11]:='否'; thesheetdetail.cells.item[j,12]:=kbmMemTable2.FieldByName('Spbmbbh').AsString; end else begin showmessage('缺少费用代码'); exit; end; if t_ch_invoice_expitem.FieldByName('币别').AsString='USD' THEN StrAmt:=FloatToStr(GetUsdExrate(t_ch_invoice.FieldByName('开票日期').AsString)*t_ch_invoice_expitem.FieldByName('金额').AsFloat) else StrAmt:=t_ch_invoice_expitem.FieldByName('金额').AsString; thesheetdetail.cells.item[j,5]:='票'; thesheetdetail.cells.item[j,6]:='1'; thesheetdetail.cells.item[j,7]:=StrAmt; thesheetdetail.cells.item[j,8]:=StrAmt; thesheetdetail.cells.item[j,9]:='0'; j:=j+1; t_ch_invoice_expitem.Next; end end else begin thesheet.cells.item[j,1]:=t_ch_invoice.FieldByName('申请编号').AsString; if (t_ch_invoice.FieldByName('发票类型').AsString='增值税专票') then thesheet.cells.item[j,2]:='增值税专用发票' else thesheet.cells.item[j,2]:='普通发票'; thesheet.cells.item[j,4]:='否'; thesheet.cells.item[j,6]:=trim(t_ch_invoice.FieldByName('发票抬头').AsString); if kbmMemTable1.Locate('NAME;BB',VarArrayOf([trim(t_ch_invoice.FieldByName('发票抬头').AsString),t_ch_invoice.FieldByName('币别').AsString]),[]) then begin SH:=kbmMemTable1.fieldbyname('SH').AsString; DZ:=kbmMemTable1.fieldbyname('DZ').AsString; ZH:=kbmMemTable1.fieldbyname('ZH').AsString; if (Pos('#|#',ZH)>0) then begin ZH:=Copy(ZH,Pos('#|#',ZH)+3,Length(ZH)-Pos('#|#',ZH)-2); end; if (Pos(' ',ZH)>0) then begin BANK:=Copy(ZH,0,Pos(' ',ZH)-1); ACCOUNT:=StringReplace(ZH,BANK,'',[]); end else begin BANK:=ZH; ACCOUNT:=''; end; thesheet.cells.item[j,8]:=kbmMemTable1.fieldbyname('SH').AsString; thesheet.cells.item[j,9]:=kbmMemTable1.fieldbyname('DZ').AsString; thesheet.cells.item[j,11]:=BANK; thesheet.cells.item[j,12]:=ACCOUNT; end else if kbmMemTable1.Locate('NAME',trim(t_ch_invoice.FieldByName('发票抬头').AsString),[]) then begin SH:=kbmMemTable1.fieldbyname('SH').AsString; DZ:=kbmMemTable1.fieldbyname('DZ').AsString; ZH:=kbmMemTable1.fieldbyname('ZH').AsString; if (Pos('#|#',ZH)>0) then begin ZH:=Copy(ZH,Pos('#|#',ZH)+3,Length(ZH)-Pos('#|#',ZH)-2); end; if (Pos(' ',ZH)>0) then begin BANK:=Copy(ZH,0,Pos(' ',ZH)-1); ACCOUNT:=StringReplace(ZH,BANK,'',[]); end else begin BANK:=ZH; ACCOUNT:=''; end; thesheet.cells.item[j,8]:=kbmMemTable1.fieldbyname('SH').AsString; thesheet.cells.item[j,9]:=kbmMemTable1.fieldbyname('DZ').AsString; thesheet.cells.item[j,11]:=BANK; thesheet.cells.item[j,12]:=ACCOUNT; end else begin showmessage('客户的名称:'+trim(t_ch_invoice.FieldByName('发票抬头').AsString)+' 在客户资料中不存在,请重新录入。'); exit; end; thesheet.cells.item[j,13]:=t_ch_invoice.FieldByName('备注').AsString; thesheet.cells.item[j,14]:='是'; ADOQuery5.Close; ADOQuery5.SQL.Clear; ADOQuery5.SQL.Add('select top 1 * from t_sys_bank where 币别='''+t_ch_invoice.FieldByName('币别').AsString+''''); ADOQuery5.Open; if (not ADOQuery5.IsEmpty) then begin thesheet.cells.item[j,15]:=ADOQuery5.fieldbyname('银行名称').AsString; thesheet.cells.item[j,16]:=ADOQuery5.fieldbyname('银行账号').AsString; thesheet.cells.item[j,17]:='是'; end; if (t_ch_invoice.FieldByName('推送邮箱').AsString='') then begin if frm_data_share.t_crm_client_all.Locate('客户简称',trim(t_ch_invoice.FieldByName('客户名称').AsString),[]) then begin thesheet.cells.item[j,18]:=frm_data_share.t_crm_client_all.FieldByName('接收发票邮箱').AsString; end; end else thesheet.cells.item[j,18]:=t_ch_invoice.FieldByName('推送邮箱').AsString; thesheet.cells.item[j,25]:='崔文飞'; thesheet.cells.item[j,26]:='崔凤琴'; thesheetdetail.cells.item[j,1]:=t_ch_invoice.FieldByName('申请编号').AsString; if t_ch_invoice.FieldByName('币别').AsString='USD' THEN begin thesheetdetail.cells.item[j,2]:=t_ch_invoice.FieldByName('费用列表').AsString; feename:= t_ch_invoice.FieldByName('费用列表').AsString; end else begin thesheetdetail.cells.item[j,2]:='代理运杂费'; feename:= '代理运杂费'; end; if kbmMemTable2.Locate('FEENAME',feename,[]) then begin spbm:=kbmMemTable2.FieldByName('GoodsTaxNo').AsString; while Length(spbm)<19 do begin spbm:=spbm+'0'; end; thesheetdetail.cells.item[j,3]:=spbm; if (kbmMemTable2.FieldByName('TaxPre').AsString='1') then thesheetdetail.cells.item[j,11]:='是' else thesheetdetail.cells.item[j,11]:='否'; thesheetdetail.cells.item[j,12]:=kbmMemTable2.FieldByName('Spbmbbh').AsString; end else begin showmessage('缺少费用代码'); exit; end; if t_ch_invoice.FieldByName('币别').AsString='USD' THEN StrAmt:=FloatToStr(GetUsdExrate(t_ch_invoice.FieldByName('开票日期').AsString)*t_ch_invoice.FieldByName('金额列表').AsFloat) else StrAmt:=t_ch_invoice.FieldByName('金额列表').AsString; thesheetdetail.cells.item[j,5]:='票'; thesheetdetail.cells.item[j,6]:='1'; thesheetdetail.cells.item[j,7]:=StrAmt; thesheetdetail.cells.item[j,8]:=StrAmt; thesheetdetail.cells.item[j,9]:='0'; end; t_ch_invoice.Edit; t_ch_invoice.FieldByName('是否导出').AsBoolean:=true; t_ch_invoice.Post; selectcount:=selectcount+1; end; ScriptPath:=ExtractFilePath(ParamStr(0))+'TMPEXCEL\'; if not DirectoryExists(ScriptPath) then CreateDir(ScriptPath); str_file:=ScriptPath +t_ch_invoice.FieldByName('申请编号').AsString +FormatDateTime('yyyy',now) +FormatDateTime('mm',now) +FormatDateTime('dd',now) +FormatDateTime('hh',now) +FormatDateTime('nn',now) +'.xlsx'; xlstest.DisplayAlerts:=false; xlstest.ActiveWorkBook.SaveAs(str_file); xlstest.WorkBooks.Open(ExtractFilePath(Paramstr(0))+'NSR.xlsx'); ShowMessage('导出完成,共导出'+inttostr(selectcount)+'票发票!'); { except ShowMessage('导出EXCEL发生错误!'); end; } finally xlstest.Quit; xlstest:=UnAssigned; end; end; procedure Tfrm_ch_invoice.expDZEXCELDuiINV(exptype: Integer); var xlstest, thesheet,thesheetdetail:Variant; j,i:integer; SH,DZ,ZH,StrAmt,spbm,feename,ScriptPath,str_file:string; begin try xlstest:=CreateOleObject('Excel.Application'); except Try //多用一个Try..Finally是防止在读写单元格过程中出错,退出时可能没有释放Excel,造成内存漏洞 xlstest.ActiveWorkBook.Saved := True; xlstest.Quit; Finally xlstest:=UnAssigned; End; Exit; end; xlstest.WorkBooks.Open(ExtractFilePath(Paramstr(0))+'NSR.xlsx'); thesheet:= xlstest.Workbooks[1].Worksheets['1-发票基本信息']; thesheetdetail:= xlstest.Workbooks[1].Worksheets['2-发票明细信息']; j:=3; if dxDBGrid1.SelectedCount>0 then begin for i:=0 to dxDBGrid1.SelectedCount-1 do begin t_ch_invoice.GotoBookmark(pointer(dxDBGrid1.selectedrows[i])); thesheet.cells.item[j,1]:=t_ch_invoice.FieldByName('申请编号').AsString; if (t_ch_invoice.FieldByName('发票类型').AsString='增值税专票') then thesheet.cells.item[j,2]:='增值税专用发票' else thesheet.cells.item[j,2]:='普通发票'; thesheet.cells.item[j,4]:='否'; thesheet.cells.item[j,6]:=trim(t_ch_invoice.FieldByName('发票抬头').AsString); if kbmMemTable1.Locate('NAME',trim(t_ch_invoice.FieldByName('发票抬头').AsString),[]) then begin SH:=kbmMemTable1.fieldbyname('SH').AsString; DZ:=kbmMemTable1.fieldbyname('DZ').AsString; ZH:=kbmMemTable1.fieldbyname('ZH').AsString; if (Pos('#|#',ZH)>0) then begin if t_ch_invoice.FieldByName('币别').AsString='USD' THEN begin ZH:=Copy(ZH,Pos('#|#',ZH)+3,Length(ZH)-Pos('#|#',ZH)-2); end else begin ZH:=Copy(ZH,0,Pos('#|#',ZH)-1); end; end; thesheet.cells.item[j,8]:=kbmMemTable1.fieldbyname('SH').AsString; thesheet.cells.item[j,9]:=kbmMemTable1.fieldbyname('DZ').AsString; thesheet.cells.item[j,11]:=ZH; end else begin showmessage('客户的名称:'+trim(t_ch_invoice.FieldByName('发票抬头').AsString)+'没有录入税控系统,或导出的客户编码不是最新的。' +#13#10+'请检查该客户是否已经录入税控系统,并从税控系统中重新导出客户编码.txt放入税控软件\税号\bin文件夹内。'); exit; end; thesheet.cells.item[j,13]:=t_ch_invoice.FieldByName('备注').AsString; thesheet.cells.item[j,14]:='是'; ADOQuery5.Close; ADOQuery5.SQL.Clear; ADOQuery5.SQL.Add('select top 1 * from t_sys_bank where 币别='''+t_ch_invoice.FieldByName('币别').AsString+''''); ADOQuery5.Open; if (not ADOQuery5.IsEmpty) then begin thesheet.cells.item[j,15]:=ADOQuery5.fieldbyname('银行名称').AsString; thesheet.cells.item[j,16]:=ADOQuery5.fieldbyname('银行账号').AsString; thesheet.cells.item[j,17]:='是'; end; if (t_ch_invoice.FieldByName('推送邮箱').AsString='') then begin if frm_data_share.t_crm_client_all.Locate('客户简称',trim(t_ch_invoice.FieldByName('客户名称').AsString),[]) then begin thesheet.cells.item[j,18]:=frm_data_share.t_crm_client_all.FieldByName('接收发票邮箱').AsString; end; end else thesheet.cells.item[j,18]:=t_ch_invoice.FieldByName('推送邮箱').AsString; thesheet.cells.item[j,25]:='崔文飞'; thesheet.cells.item[j,26]:='崔凤琴'; thesheetdetail.cells.item[j,1]:=t_ch_invoice.FieldByName('申请编号').AsString; if t_ch_invoice.FieldByName('币别').AsString='USD' THEN begin thesheetdetail.cells.item[j,2]:=t_ch_invoice.FieldByName('费用列表').AsString; feename:= t_ch_invoice.FieldByName('费用列表').AsString; end else begin thesheetdetail.cells.item[j,2]:='代理运杂费'; feename:= '代理运杂费'; end; if kbmMemTable2.Locate('FEENAME',feename,[]) then begin spbm:=kbmMemTable2.FieldByName('GoodsTaxNo').AsString; while Length(spbm)<19 do begin spbm:=spbm+'0'; end; thesheetdetail.cells.item[j,3]:=spbm; end else begin showmessage('缺少费用代码'); exit; end; if t_ch_invoice.FieldByName('币别').AsString='USD' THEN StrAmt:=FloatToStr(GetUsdExrate(t_ch_invoice.FieldByName('开票日期').AsString)*t_ch_invoice.FieldByName('金额列表').AsFloat) else StrAmt:=t_ch_invoice.FieldByName('金额列表').AsString; thesheetdetail.cells.item[j,5]:='票'; thesheetdetail.cells.item[j,6]:='1'; thesheetdetail.cells.item[j,7]:=StrAmt; thesheetdetail.cells.item[j,8]:=StrAmt; thesheetdetail.cells.item[j,9]:='0'; j:=j+1; end; end else begin thesheet.cells.item[j,1]:=t_ch_invoice.FieldByName('申请编号').AsString; if (t_ch_invoice.FieldByName('发票类型').AsString='增值税专票') then thesheet.cells.item[j,2]:='增值税专用发票' else thesheet.cells.item[j,2]:='普通发票'; thesheet.cells.item[j,4]:='否'; thesheet.cells.item[j,6]:=trim(t_ch_invoice.FieldByName('发票抬头').AsString); if kbmMemTable1.Locate('NAME',trim(t_ch_invoice.FieldByName('发票抬头').AsString),[]) then begin SH:=kbmMemTable1.fieldbyname('SH').AsString; DZ:=kbmMemTable1.fieldbyname('DZ').AsString; ZH:=kbmMemTable1.fieldbyname('ZH').AsString; if (Pos('#|#',ZH)>0) then begin if t_ch_invoice.FieldByName('币别').AsString='USD' THEN begin ZH:=Copy(ZH,Pos('#|#',ZH)+3,Length(ZH)-Pos('#|#',ZH)-2); end else begin ZH:=Copy(ZH,0,Pos('#|#',ZH)-1); end; end; thesheet.cells.item[j,8]:=kbmMemTable1.fieldbyname('SH').AsString; thesheet.cells.item[j,9]:=kbmMemTable1.fieldbyname('DZ').AsString; thesheet.cells.item[j,11]:=ZH; end else begin showmessage('客户的名称:'+trim(t_ch_invoice.FieldByName('发票抬头').AsString)+'没有录入税控系统,或导出的客户编码不是最新的。' +#13#10+'请检查该客户是否已经录入税控系统,并从税控系统中重新导出客户编码.txt放入税控软件\税号\bin文件夹内。'); exit; end; thesheet.cells.item[j,13]:=t_ch_invoice.FieldByName('备注').AsString; thesheet.cells.item[j,14]:='是'; ADOQuery5.Close; ADOQuery5.SQL.Clear; ADOQuery5.SQL.Add('select top 1 * from t_sys_bank where 币别='''+t_ch_invoice.FieldByName('币别').AsString+''''); ADOQuery5.Open; if (not ADOQuery5.IsEmpty) then begin thesheet.cells.item[j,15]:=ADOQuery5.fieldbyname('银行名称').AsString; thesheet.cells.item[j,16]:=ADOQuery5.fieldbyname('银行账号').AsString; thesheet.cells.item[j,17]:='是'; end; if (t_ch_invoice.FieldByName('推送邮箱').AsString='') then begin if frm_data_share.t_crm_client_all.Locate('客户简称',trim(t_ch_invoice.FieldByName('客户名称').AsString),[]) then begin thesheet.cells.item[j,18]:=frm_data_share.t_crm_client_all.FieldByName('接收发票邮箱').AsString; end; end else thesheet.cells.item[j,18]:=t_ch_invoice.FieldByName('推送邮箱').AsString; thesheet.cells.item[j,25]:='崔文飞'; thesheet.cells.item[j,26]:='崔凤琴'; end; thesheetdetail.cells.item[j,1]:=t_ch_invoice.FieldByName('申请编号').AsString; if t_ch_invoice.FieldByName('币别').AsString='USD' THEN begin thesheetdetail.cells.item[j,2]:=t_ch_invoice.FieldByName('费用列表').AsString; feename:= t_ch_invoice.FieldByName('费用列表').AsString; end else begin thesheetdetail.cells.item[j,2]:='代理运杂费'; feename:= '代理运杂费'; end; if kbmMemTable2.Locate('FEENAME',feename,[]) then begin spbm:=kbmMemTable2.FieldByName('GoodsTaxNo').AsString; while Length(spbm)<19 do begin spbm:=spbm+'0'; end; thesheetdetail.cells.item[j,3]:=spbm; end else begin showmessage('缺少费用代码'); exit; end; if t_ch_invoice.FieldByName('币别').AsString='USD' THEN StrAmt:=FloatToStr(GetUsdExrate(t_ch_invoice.FieldByName('开票日期').AsString)*t_ch_invoice.FieldByName('金额列表').AsFloat) else StrAmt:=t_ch_invoice.FieldByName('金额列表').AsString; thesheetdetail.cells.item[j,5]:='票'; thesheetdetail.cells.item[j,6]:='1'; thesheetdetail.cells.item[j,7]:=StrAmt; thesheetdetail.cells.item[j,8]:=StrAmt; thesheetdetail.cells.item[j,9]:='0'; ScriptPath:=ExtractFilePath(ParamStr(0))+'TMPEXCEL\'; if not DirectoryExists(ScriptPath) then CreateDir(ScriptPath); str_file:=ScriptPath +t_ch_invoice.FieldByName('申请编号').AsString +FormatDateTime('yyyy',now) +FormatDateTime('mm',now) +FormatDateTime('dd',now) +FormatDateTime('hh',now) +FormatDateTime('nn',now) +'.xlsx'; xlstest.DisplayAlerts:=false; xlstest.ActiveWorkBook.SaveAs(str_file); xlstest.WorkBooks.Open(ExtractFilePath(Paramstr(0))+'NSR.xlsx'); xlstest.Quit; xlstest:=UnAssigned; end; procedure Tfrm_ch_invoice.bsSkinButton40Click(Sender: TObject); begin expDZEXCELINV(0); end; procedure Tfrm_ch_invoice.bsSkinButton41Click(Sender: TObject); var Excel: OLEVariant; ExcelVersion,filename,strSheet1name,strbatid,strtmp,INVNO,APPLYNO,invapplyno: string; dlg:TOpenDialog; i:integer; aQuery,aQueryinv:TADOQuery; begin dlg:=TOpenDialog.Create(Self); dlg.Filter:='Excel 文档(*.xls,*.xlsx)|*.xls;*.xlsx'; if( dlg.Execute()=false) then Exit; qry1Excel.Close; connExcel.Close; filename:=dlg.filename; try Excel := CreateOLEObject('EXCEL.Application'); ExcelVersion := Excel.version; Excel.WorkBooks.Open( filename); strSheet1name:= Excel.WorkSheets[1].Name; //edt1.Text:=strSheet1name; finally Excel.Quit; Excel := UnAssigned; end; if ExcelVersion = '11.0' then //Excel2003及早期的版本 ConnExcel.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+ filename+';Extended Properties=excel 8.0;'+ 'Persist Security Info=false;' else //Excel2007及以后的版本 ConnExcel.ConnectionString:='Provider=Microsoft.ACE.OLEDB.12.0;Data Source='+ filename+';Extended Properties=excel 12.0;'+ 'Persist Security Info=True';//注意不能为false aQuery:=CreateAdoQuery; aQueryinv:=CreateAdoQuery; try ConnExcel.LoginPrompt:=false; ConnExcel.Connected:=true; qry1Excel.Connection:=ConnExcel; qry1Excel.close; qry1Excel.SQL.Clear; qry1Excel.SQL.add('select * from ['+strSheet1name+'$]'); qry1Excel.Active:=true; qry1Excel.Last; qry1Excel.First; aQuery.SQL.Clear; aQuery.SQL.Text:='select top 0 * from t_ch_invoice_invno'; aQuery.open; i:=0; while not qry1Excel.Eof do begin INVNO:=qry1Excel.Fields[2].AsString; APPLYNO:=qry1Excel.Fields[0].AsString; if (INVNO<>'') and(APPLYNO<>'') then begin invapplyno:=APPLYNO; if (Length(APPLYNO)>12) then begin invapplyno:=copy(APPLYNO,0,12); aQuery.Insert; aQuery.FieldByName('申请编号').AsString:=invapplyno; aQuery.FieldByName('申请编号2').AsString:=APPLYNO; aQuery.FieldByName('发票号').AsString:=INVNO; aQuery.Post; end else begin aQuery.Insert; aQuery.FieldByName('申请编号').AsString:=APPLYNO; aQuery.FieldByName('申请编号2').AsString:=APPLYNO; aQuery.FieldByName('发票号').AsString:=INVNO; aQuery.Post; end; aQueryinv.close; aQueryinv.SQL.Add('update t_ch_invoice set 税控发票号码=stuff((SELECT distinct 发票号+'','' FROM t_ch_invoice_invno AS t WHERE t.申请编号=f.申请编号 FOR xml path('''')), 1, 0,'''') from t_ch_invoice f where 申请编号='''+invapplyno+''''); aQueryinv.ExecSQL; end; i:=i+1; qry1Excel.Next; end; ShowMessage('导入完成!'); finally qry1Excel.close(); connExcel.Close(); FreeAndNil(aQuery); FreeAndNil(aQueryinv); end; end; procedure Tfrm_ch_invoice.t_ch_invoice_invnoAfterInsert(DataSet: TDataSet); begin t_ch_invoice_invno['申请编号']:=t_ch_invoice['申请编号']; end; procedure Tfrm_ch_invoice.t_ch_invoice_invnoAfterPost(DataSet: TDataSet); var str:string; aQuery,aQueryinv:TADOQuery; begin aQuery:=CreateAdoQuery; aQueryinv:=CreateAdoQuery; str:=''; try with aQuery do begin Close;sql.Clear; sql.Add('select * from t_ch_invoice_invno where 申请编号='''+t_ch_invoice.fieldbyname('申请编号').AsString+''''); open; First; while not eof do begin str:=str+','+aQuery.fieldbyname('发票号').AsString; Next; end; aQueryinv.close; aQueryinv.SQL.Add('update t_ch_invoice set 税控发票号码='''+str+''' where 申请编号='''+t_ch_invoice.fieldbyname('申请编号').AsString+''''); aQueryinv.ExecSQL; end; finally FreeAndNil(aQuery); FreeAndNil(aQueryinv); end; end; end.