⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 udatam.pas

📁 安徽省货物销售统一发票管理系统 操作说明 1、开票 F7或双击可 查询
💻 PAS
字号:
unit UDataM;

interface

uses
  SysUtils, Classes, DB, ADODB, forms, Controls, main;

type

  TDataM = class(TDataModule)
    ADOConnection1: TADOConnection;
    MissionSet: TADODataSet;
    MissionSource: TDataSource;
    MissionSetTaxNo: TWideStringField;
    MissionSetDWMC: TWideStringField;
    MissionSetActive: TBooleanField;
    MissionSetphotoNo: TWideStringField;
    MissionSetaddress: TWideStringField;
    MissionSetsk_Ren: TWideStringField;
    MissionSetkp_Ren: TWideStringField;
    MissionSetbank: TWideStringField;
    MissionSetbankno: TWideStringField;
    CurMission: TADOTable;
    CurMissionSource: TDataSource;
    RenSet: TADODataSet;
    RenSource: TDataSource;
    CurMissiontaxNo: TWideStringField;
    CurMissionren: TWideStringField;
    KHFLSet: TADODataSet;
    KHFLSource: TDataSource;
    KHMXSet: TADODataSet;
    KMMXSource: TDataSource;
    jldwSet: TADODataSet;
    jldwSetjlDM: TWideStringField;
    jldwSetJLDW: TWideStringField;
    jldwSource: TDataSource;
    KHMXSetid: TAutoIncField;
    KHMXSetfl_id: TIntegerField;
    KHMXSetKHDM: TWideStringField;
    KHMXSetKHMC: TWideStringField;
    KHMXSetKHAddress: TWideStringField;
    KHMXSetKHYZBM: TWideStringField;
    KHMXSetKHTelNO: TWideStringField;
    KHMXSetKHMAIN: TWideStringField;
    KHMXSetKHBank: TWideStringField;
    KHMXSetKHZH: TWideStringField;
    KHMXSetKHTAXNo: TWideStringField;
    KHMXSetCredence: TWideStringField;
    KHFLSetfl_id: TAutoIncField;
    KHFLSetTaxNo: TWideStringField;
    KHFLSetFLMC: TWideStringField;
    CPFLSet: TADODataSet;
    CPFLSource: TDataSource;
    CPFLSetfl_id: TAutoIncField;
    CPFLSetTaxNo: TWideStringField;
    CPFLSetFLMC: TWideStringField;
    CPMXSet: TADODataSet;
    CPMXSource: TDataSource;
    CPMXSetid: TAutoIncField;
    CPMXSetfl_id: TIntegerField;
    CPMXSetCPDM: TWideStringField;
    CPMXSetCPMC: TWideStringField;
    CPMXSetCPGG: TWideStringField;
    CPMXSetCPDW: TWideStringField;
    CPMXSetdefaDJ: TFloatField;
    CPMXSetdefaSL: TFloatField;
    CurMissionprintName: TWideStringField;
    CurMissionprint_X: TIntegerField;
    CurMissionprint_Y: TIntegerField;
    CurMissionSLDec: TIntegerField;
    CurMissionDJDec: TIntegerField;
    CurMissionSLFjh: TBooleanField;
    CurMissionDJfjh: TBooleanField;
    CurMissionJEfjh: TBooleanField;
    CurMissionprintNo: TBooleanField;
    fpkset: TADODataSet;
    fpksetid: TAutoIncField;
    fpksettaxNo: TWideStringField;
    fpksetinputno: TWideStringField;
    fpksetFPcode: TWideStringField;
    fpksetbeginNo: TWideStringField;
    fpksetFPfs: TSmallintField;
    fpksetendNo: TWideStringField;
    fpksetCurNo: TWideStringField;
    fpksetykfs: TSmallintField;
    fpksetzffs: TSmallintField;
    fpksetjffs: TSmallintField;
    fpksetsyfs: TIntegerField;
    fpksetactive: TBooleanField;
    fpksetshare: TBooleanField;
    fpksource: TDataSource;
    kpkSet: TADODataSet;
    kpkSource: TDataSource;
    kpmxkset: TADODataSet;
    kpmxksource: TDataSource;
    kpkSetfp_id: TAutoIncField;
    kpkSetCancel: TBooleanField;
    kpkSettaxNo: TWideStringField;
    kpkSetFPcode: TWideStringField;
    kpkSetFPno: TWideStringField;
    kpkSetkhmc: TWideStringField;
    kpkSethjje: TBCDField;
    kpkSetbankMNo: TWideStringField;
    kpkSetaddress: TWideStringField;
    kpkSetphotono: TWideStringField;
    kpkSetskRen: TWideStringField;
    kpkSetkpRen: TWideStringField;
    kpkSetkpDate: TDateTimeField;
    kpkSetrate: TSmallintField;
    kpkSetse: TBCDField;
    kpkSetkind: TWideStringField;
    kpkSetinputno: TWideStringField;
    kpmxksetmx_id: TAutoIncField;
    kpmxksetfp_id: TIntegerField;
    kpmxksetXMMC: TWideStringField;
    kpmxksetXMGG: TWideStringField;
    kpmxksetXMDW: TWideStringField;
    kpmxksetXMSL: TFloatField;
    kpmxksetXMDJ: TFloatField;
    kpmxksetXMJE: TBCDField;
    CurMissionb01: TBooleanField;
    CurMissionb02: TBooleanField;
    CurMissionb03: TBooleanField;
    CurMissionb04: TBooleanField;
    CurMissionb05: TBooleanField;
    CurMissionb06: TBooleanField;
    CurMissionb07: TBooleanField;
    ADODataSet1: TADODataSet;
    DataSource1: TDataSource;
    ADODataSet1XMMC: TWideStringField;
    ADODataSet1XMGG: TWideStringField;
    ADODataSet1XMDW: TWideStringField;
    ADODataSet1xmsl: TFloatField;
    ADODataSet1xmje: TBCDField;
    procedure DataModuleCreate(Sender: TObject);
    procedure DataModuleDestroy(Sender: TObject);
    procedure MissionSetBeforeDelete(DataSet: TDataSet);
    procedure KHFLSetBeforeDelete(DataSet: TDataSet);
    procedure CPFLSetBeforeDelete(DataSet: TDataSet);
  private
    { Private declarations }
  public
    procedure loadkpxx;    //读取开票单位信息
    procedure loadkpxxfj;  //读取开票单位信息附加
    procedure reloadkpxx;    //读取开票单位信息
    procedure reStorekpxx; //恢复开票单位信息
    procedure setcurMiss;
    function getCurfpDM(var AFpCode:string;Var AFpNo:string):Boolean; //获取当前发票号
    function setfpfilter:boolean;  //发票过滤
    procedure Cancelfilter; //取消发票过滤
    procedure Filterfp(dataset:Tdataset;var Accept:boolean);

  end;

var
  DataM: TDataM;

implementation
uses URen, Ufpfilter;
{$R *.dfm}


procedure TDatam.Filterfp(dataset:TDataset;var Accept:boolean);
var Astr,ANy:string;
    Abz:boolean;
begin
  if frm_fpfilter.CheckBox1.Checked then
  begin
    Astr:=inttostr(frm_fpfilter.SpinEdit1.Value*100+frm_fpfilter.ComboBox1.ItemIndex+1);
    ANy:=formatdatetime('yyyymm',dataset.FieldByName('KpDate').AsDateTime);
    if ANy=Astr then
      Accept:=true
    else
      Accept:=false;
  end else
  begin
    Astr:=Dataset.fieldbyname('fpno').AsString;
    if (Astr>=frm_fpfilter.Edit1.Text) and (Astr<=frm_fpfilter.Edit2.Text) then
      Accept:=true
    else
      Accept:=false;
  end;
  if frm_fpfilter.RadioGroup1.ItemIndex<>0 then
  begin
    Abz:=dataset.FieldByName('Cancel').AsBoolean;
    if frm_fpfilter.RadioGroup1.ItemIndex=1 then
      Accept:=Accept and Abz
    else
      Accept:=Accept and (not Abz);
  end;
end;

function Tdatam.setfpfilter:boolean;
var Astr:string;
begin
  Astr:='';
  frm_fpfilter.Label1.Caption:='开票单位税号:'+kpxx.Cur_TaxNo;
  frm_fpfilter.Label2.Caption:='开票单位名称:'+kpxx.Cur_Dwmc;
  if frm_fpfilter.ShowModal=mrOk then
  begin
    try
      kpkset.Filtered:=false;
      kpkset.OnFilterRecord:=filterfp;
    finally
      kpkset.Filtered:=true;
      kpkset.First;
    end;
    Result:=True;
  end else
  begin
//    Cancelfilter;
    Result:=false;
  end;
end;

procedure TDatam.Cancelfilter;
begin
  kpkset.Filtered:=false;
  kpkset.OnFilterRecord:=nil;
end;

function TDatam.getCurfpDM(var AFpCode:string;Var AFpNo:string):Boolean;
var Abz:boolean;
begin
  Abz:=true;
  setcurMiss;
  if not fpkset.Active then fpkset.Open;
  if fpkset.Locate('Active',true,[]) then
  begin
    if fpksetsyfs.AsInteger<=0 then
    begin
      fpkset.Edit;
      fpksetactive.AsBoolean:=false;
      fpkset.post;
      Abz:=false;
    end;
  end else
    Abz:=false;
  if not Abz then
  begin
    fpkset.First;
    while not fpkset.Eof do
    begin
      if fpksetsyfs.AsInteger>0 then
      begin
        fpkset.Edit;
        fpksetactive.AsBoolean:=true;
        fpkset.Post;
        Abz:=True;
        break;
      end;
      fpkset.Next;
    end;
  end;
  if Abz then
  begin
    AFpCode:=fpksetfpcode.AsString;
    AfpNo:=fpksetCurNo.AsString;
  end;
  Result:=Abz;
end;


procedure Tdatam.setcurMiss;
begin
  if not MissionSet.Active then missionset.Open;
  if missionset.State in [dsEdit,dsInsert] then missionset.Post;
  if missionsettaxno.AsString<>kpxx.Cur_TaxNo then
    missionset.Locate('taxNo',kpxx.Cur_TaxNo,[]);
  if CurMissiontaxno.AsString<>kpxx.Cur_TaxNo then
  begin
    curmission.Edit;
    curmissiontaxno.AsString:=kpxx.Cur_TaxNo;
    curmission.Post;
  end;
end;

procedure TDataM.loadkpxx;
begin
  if not MissionSet.Active then missionset.Open;
  if missionset.State in [dsEdit,dsInsert] then missionset.Post;
  kpxx.Cur_TaxNo:=missionset.fieldbyname('Taxno').AsString;
  kpxx.Cur_Dwmc:=MissionSetDWMC.AsString;
  kpxx.Cur_Bank:=MissionSetbank.AsString;
  kpxx.Cur_BankNo:=MissionSetbankno.AsString;
  kpxx.Cur_address:=MissionSetaddress.AsString;
  kpxx.Cur_TelNo:=MissionSetphotoNo.AsString;
  kpxx.Cur_skRen:=MissionSetsk_Ren.AsString;
  kpxx.Cur_kpRen:=MissionSetkp_Ren.AsString;
end;

procedure TDatam.loadkpxxfj;
begin
  if not Curmission.Active then curmission.Open;
  if curmission.State in [dsEdit,dsInsert] then Curmission.Post;
  curmission.First;
  kpxx.printer_name:=CurMissionprintName.AsString;
  kpxx.print_x:=CurMissionprint_X.AsInteger;
  kpxx.print_y:=CurMissionprint_Y.AsInteger;
  kpxx.sl_dec:=CurMissionSLDec.AsInteger;
  kpxx.sl_fjh:=CurMissionSLFjh.AsBoolean;
  kpxx.dj_dec:=CurMissionDJDec.AsInteger;
  kpxx.dj_fjh:=CurMissionDJfjh.AsBoolean;
  kpxx.je_fjh:=CurMissionJEfjh.AsBoolean;
  kpxx.printNO:=CurMissionprintNo.AsBoolean;
  kpxx.b01:=curmissionb01.AsBoolean;
  kpxx.b02:=curmissionb02.AsBoolean;
  kpxx.b03:=curmissionb03.AsBoolean;
  kpxx.b04:=curmissionb04.AsBoolean;
  kpxx.b05:=curmissionb05.AsBoolean;
  kpxx.b06:=curmissionb06.AsBoolean;
  kpxx.b07:=curmissionb07.AsBoolean;
end;

procedure TDataM.reloadkpxx;
begin
  if not MissionSet.Active then missionset.Open;
  if missionset.State in [dsEdit,dsInsert] then missionset.Post;
  if missionset.Locate('Taxno',kpxx.Cur_TaxNo,[]) then
  begin
    kpxx.Cur_TaxNo:=missionset.fieldbyname('Taxno').AsString;
    kpxx.Cur_Dwmc:=MissionSetDWMC.AsString;
    kpxx.Cur_Bank:=MissionSetbank.AsString;
    kpxx.Cur_BankNo:=MissionSetbankno.AsString;
    kpxx.Cur_address:=MissionSetaddress.AsString;
    kpxx.Cur_TelNo:=MissionSetphotoNo.AsString;
    kpxx.Cur_skRen:=MissionSetsk_Ren.AsString;
    kpxx.Cur_kpRen:=MissionSetkp_Ren.AsString;
  end;
end;


procedure TDataM.reStorekpxx;
begin
  if not MissionSet.Active then
  begin
    missionset.Open;
    if not missionset.Locate('Taxno',kpxx.Cur_TaxNo,[]) then
    begin
      missionset.Append;
      missionset.FieldByName('TaxNo').AsString:=kpxx.Cur_TaxNo;
      missionset.Post;
    end;
  end;
  if missionset.State in [dsEdit,dsInsert] then missionset.Post;
  missionset.Edit;
  MissionSetDWMC.AsString:=kpxx.Cur_Dwmc;
  MissionSetbank.AsString:=kpxx.Cur_Bank;
  MissionSetbankno.AsString:=kpxx.Cur_BankNo;
  MissionSetaddress.AsString:=kpxx.Cur_address;
  MissionSetphotoNo.AsString:=kpxx.Cur_TelNo;
  MissionSetsk_Ren.AsString:=kpxx.Cur_skRen;
  MissionSetkp_Ren.AsString:=kpxx.Cur_kpRen;
  missionset.Post;
end;

procedure TDataM.DataModuleCreate(Sender: TObject);
var ATaxNo:string;
begin
  ADOConnection1.Connected:=true;
  MissionSet.Open;
  CurMission.Open;
  //定位开票单位
  ATaxNo:=CurMission.fieldbyname('TaxNo').AsString;
  Missionset.Locate('TaxNo',ATaxNo,[loCaseInsensitive]);
  RenSet.Open;
  KHFLSet.Open;
  KHMXSet.Open;
  jldwset.Open;
  CPFLset.Open;
  CPMxSet.Open;
  fpkset.Open;
  kpkset.Open;
  kpmxkset.Open;

end;

procedure TDataM.DataModuleDestroy(Sender: TObject);
begin

  kpmxkset.Close;
  kpkset.Close;
  fpkset.Close;
  CPFLSet.Close;
  CPMxSet.Close;
  jldwset.Close;
  KHMXSet.Close;
  KHFLSet.Close;
  RenSet.Close;
  //保存开票信息
  curmission.First;
  curMission.Edit;
  curMissionTaxNO.AsString:=kpxx.Cur_TaxNo;
  CurMissionprintName.AsString:=kpxx.printer_name;
  CurMissionprint_X.AsInteger:=kpxx.print_x;
  CurMissionprint_Y.AsInteger:=kpxx.print_y;
  CurMissionSLDec.AsInteger:=kpxx.sl_dec;
  CurMissionDJDec.AsInteger:=kpxx.dj_dec;
  CurMissionSLFjh.AsBoolean:=kpxx.sl_fjh;
  CurMissionJEfjh.AsBoolean:=kpxx.je_fjh;
  CurMissionprintNo.AsBoolean:=kpxx.printNO;
  curMissionb01.AsBoolean:=kpxx.b01;
  curMissionb02.AsBoolean:=kpxx.b02;
  curMissionb03.AsBoolean:=kpxx.b03;
  curMissionb04.AsBoolean:=kpxx.b04;
  curMissionb05.AsBoolean:=kpxx.b05;
  curMissionb06.AsBoolean:=kpxx.b06;
  curMissionb07.AsBoolean:=kpxx.b07;
  CurMission.Post;

  CurMission.Close;
  MissionSet.Close;
  ADOConnection1.Connected:=false;
end;


procedure TDataM.MissionSetBeforeDelete(DataSet: TDataSet);
begin
  screen.Cursor:=crHourGlass	;
  //先删除人员
  renset.DisableControls;
  Renset.First;
  while not Renset.Eof do renset.Delete;
  renset.EnableControls;
  //删除客户类别
  khflset.DisableControls;
  KHFLSet.First;
  while not KHFLset.Eof do khflset.Delete;
  khflset.EnableControls;
  //删除货物类别
  cpflset.DisableControls;
  CPFLset.First;
  while not CPFLset.Eof do CPFLset.Delete;
  cpflset.EnableControls;
  //.....

  

  screen.Cursor:=crDefault
end;

procedure TDataM.KHFLSetBeforeDelete(DataSet: TDataSet);
begin
  screen.Cursor:=crHourGlass;
  khmxset.DisableControls;
  KHMXset.First;
  while not KHMXset.Eof do khmxset.Delete;
  khmxset.EnableControls;
  screen.Cursor:=crDefault;
end;

procedure TDataM.CPFLSetBeforeDelete(DataSet: TDataSet);
begin
  screen.Cursor:=crHourGlass;
  cpmxset.DisableControls;
  cpMXset.First;
  while not cpMXset.Eof do cpmxset.Delete;
  cpmxset.EnableControls;
  screen.Cursor:=crDefault;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -