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

📄 csh510_02.pas.svn-base

📁 这是一个功能齐全的,代码完整的ERP企业信息管理系统,现在上传和大家分享
💻 SVN-BASE
📖 第 1 页 / 共 3 页
字号:
unit Csh510_02;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Bas200_13, DB, ADODB, ActnList, Menus, ComCtrls, ToolWin,
  StdCtrls, Buttons, wwdbdatetimepicker, dxCntner, dxEditor, dxExEdtr,
  dxEdLib, Mask, wwdbedit, Wwdotdot, Grids, Wwdbigrd, Wwdbgrid, Wwdbcomb,
  wwdblook, DBCtrls;

type
  TCsh510_02Form = class(TBas200_13Form)
    lblAcct: TLabel;
    cbAcct: TComboBox;
    lblType: TLabel;
    cbType: TComboBox;
    lblFrom: TLabel;
    cbFrom: TComboBox;
    lblObj: TLabel;
    cbObj: TComboBox;
    edtPerson: TEdit;
    sbPerson: TSpeedButton;
    edtPersonName: TEdit;
    lblCust: TLabel;
    edtCust: TEdit;
    sbCust: TSpeedButton;
    edtCustName: TEdit;
    lblAmount: TLabel;
    lblDate: TLabel;
    edtDate: TwwDBDateTimePicker;
    lblOrgCode: TLabel;
    PageControl1: TPageControl;
    tsItem: TTabSheet;
    wwDBGrid1: TwwDBGrid;
    edtItem: TwwDBComboDlg;
    lblPerson: TLabel;
    edtAmount: TEdit;
    dsCsh510B: TDataSource;
    adsCsh510B: TADODataSet;
    qryCsh510B: TADOQuery;
    adsCsh510BFCode: TStringField;
    adsCsh510BFLineNo: TIntegerField;
    adsCsh510BFInvCode: TStringField;
    adsCsh510BFInvLineNo: TIntegerField;
    adsCsh510BFRecAmount: TFloatField;
    adsCsh510BFAmount: TFloatField;
    adsCsh510BFTasCode: TStringField;
    adsCsh510BFRemark: TStringField;
    lblBillNo: TLabel;
    edtBillNo: TEdit;
    memRemark: TMemo;
    adsCsh510BFClass: TStringField;
    adsCsh510BFClassNo: TIntegerField;
    adsCsh510BFProject: TStringField;
    adsCsh510BFProjectNo: TIntegerField;
    adsCsh510BFDept: TStringField;
    adsCsh510BFDeptNo: TIntegerField;
    qryClass: TADOQuery;
    qryProject: TADOQuery;
    qryDept: TADOQuery;
    qryDeptH100_001: TAutoIncField;
    qryDeptH100_002: TWideStringField;
    qryDeptH100_003: TIntegerField;
    qryDeptH100_004: TBooleanField;
    qryProjectC150_001: TAutoIncField;
    qryProjectC150_002: TWideStringField;
    qryProjectC150_003: TIntegerField;
    qryProjectC150_004: TBooleanField;
    qryClassC140_001: TAutoIncField;
    qryClassC140_002: TWideStringField;
    qryClassC140_003: TSmallintField;
    qryClassC140_004: TIntegerField;
    qryClassC140_005: TBooleanField;
    qryCsh550: TADOQuery;
    qryCsh550C550_001: TAutoIncField;
    qryCsh550C550_002: TWideStringField;
    qryCsh550C550_003: TWideStringField;
    qryCsh550C550_004: TSmallintField;
    qryCsh550C550_005: TIntegerField;
    qryCsh550C550_006: TIntegerField;
    qryCsh550C550_007: TDateTimeField;
    qryCsh550C550_008: TFloatField;
    qryItems: TADOQuery;
    qryHrm150: TADOQuery;
    AutoIncField1: TAutoIncField;
    WideStringField1: TWideStringField;
    WideStringField2: TWideStringField;
    qryOrd150: TADOQuery;
    qryOrd150FNo: TAutoIncField;
    qryOrd150FCode: TWideStringField;
    qryOrd150FName: TWideStringField;
    ADODataSet1: TADODataSet;
    edtOrgCode: TEdit;
    qryCsh140: TADOQuery;
    ADOQuery1C510A_001: TWideStringField;
    ADOQuery1C510A_002: TIntegerField;
    ADOQuery1C510A_003: TIntegerField;
    ADOQuery1C510A_004: TSmallintField;
    ADOQuery1C510A_005: TSmallintField;
    ADOQuery1C510A_006: TSmallintField;
    ADOQuery1C510A_007: TSmallintField;
    ADOQuery1C510A_008: TIntegerField;
    ADOQuery1C510A_009: TFloatField;
    ADOQuery1C510A_010: TDateTimeField;
    ADOQuery1C510A_011: TWideStringField;
    ADOQuery1C510A_012: TIntegerField;
    ADOQuery1C510A_013: TFloatField;
    ADOQuery1C510A_014: TWideStringField;
    ADOQuery1C510A_015: TWideStringField;
    ADOQuery1C510A_016: TDateTimeField;
    ADOQuery1C510A_017: TWideStringField;
    ADOQuery1C510A_018: TDateTimeField;
    ADOQuery1C510A_019: TWideStringField;
    ADOQuery1C550_002: TWideStringField;
    ADOQuery1H150_002: TWideStringField;
    ADOQuery1H150_003: TWideStringField;
    qryCsh510BC510B_001: TWideStringField;
    qryCsh510BC510B_002: TIntegerField;
    qryCsh510BC510B_003: TWideStringField;
    qryCsh510BC510B_004: TIntegerField;
    qryCsh510BC510B_005: TFloatField;
    qryCsh510BC510B_006: TFloatField;
    qryCsh510BC510B_007: TIntegerField;
    qryCsh510BC510B_008: TIntegerField;
    qryCsh510BC510B_009: TIntegerField;
    qryCsh510BC510B_010: TWideStringField;
    qryCsh510BC510B_011: TWideStringField;
    dsClass: TDataSource;
    dsProject: TDataSource;
    dsDept: TDataSource;
    cbClass: TDBLookupComboBox;
    cbProject: TDBLookupComboBox;
    cbDept: TDBLookupComboBox;
    procedure edtItemCustomDlg(Sender: TObject);
    procedure sbCustClick(Sender: TObject);
    procedure sbPersonClick(Sender: TObject);
    procedure wwDBGrid1ColExit(Sender: TObject);
    procedure wwDBGrid1Exit(Sender: TObject);
    procedure wwDBGrid1Enter(Sender: TObject);
    procedure wwDBGrid1UpdateFooter(Sender: TObject);
    procedure adsCsh510BNewRecord(DataSet: TDataSet);
    procedure adsCsh510BAfterScroll(DataSet: TDataSet);
    procedure adsCsh510BBeforePost(DataSet: TDataSet);
    procedure edtPersonExit(Sender: TObject);
    procedure edtCustExit(Sender: TObject);
    procedure cbObjChange(Sender: TObject);
    procedure cbTypeChange(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure cbFromChange(Sender: TObject);
  private
    { Private declarations }
    AType:String;
    ALastNo:Integer;
    ABusy,AIsChanged:Boolean;
    procedure CheckItem;
    procedure SetDBGridA(AFrom:Integer);
    procedure setqryClass(AFlag:Integer);
    procedure GetDetailData;
    function GetCurrNo(ACurrNo:Integer):Integer;
  public
    { Public declarations }
    procedure OpenData(ACode:String);
    procedure SetInterface; override;
    procedure GetDataInfo; override;
    procedure InsertEvent; override;
    procedure UpdateEvent; override;
    procedure DeleteEvent; override;
    procedure SetEmptyInit; override;
    procedure TableBeforePost; override;
    procedure TableAfterPost; override;
    procedure ReportGetValue(const ParName: String; var ParValue: Variant); override;
  end;
var
  Csh510_02Form: TCsh510_02Form;

implementation

uses SYSDATA, CommFun, CshComm, HwSelData, HwSelDataA;

{$R *.dfm}

{ TCsh510_06Form }

procedure TCsh510_02Form.DeleteEvent;
var
  AAccNo:Integer;
  ADate:TDateTime;
  AAmount:Double;
  AObjType,ABillNo,ACustNo:Integer;
  ACode:string;
begin
  Screen.Cursor:=crHourGlass;
  ACode:=edtCode.Text;

  //删除旧记录
  AAccNo:=ADOQuery1.FieldByName('C510A_003').Value;    //帐户编号
  ADate:=ADOQuery1.FieldByName('C510A_010').Value;     //收支日期
  ABillNo:=ADOQuery1.FieldByName('C510A_002').Value;   //顺序编号
  AObjType:=ADOQuery1.FieldByName('C510A_007').Value;  //对象类型
  ACustNo:=ADOQuery1.FieldByName('C510A_008').Value;   //对象编号
  AAmount:=ADOQuery1.FieldByName('C510A_009').Value;   //收支金额

  if cbFrom.ItemIndex=1 then  //销售
  begin
    //反写销售发票ACR510B的已收支金额
    UpdateACR510B(AAccNo,ADate,ABillNo,'DEL');
    //反写销售定单ORD510B的已收支金额
    UpdateORD510B(AAccNo,ADate,ABillNo,'O510B_027','DEL');
  end else
  if cbFrom.ItemIndex=2 then  //采购
  begin
    //反写采购发票ACR510B的已收支金额
    UpdateACP510B(AAccNo,ADate,ABillNo,'DEL');
    //反写采购定单PUR510B的已收支金额
    UpdatePUR510B(AAccNo,ADate,ABillNo,'P510B_027','DEL');
  end;
  //更新债权债务帐本表的余额字段
  if cbType.ItemIndex in [2,3,4,5] then
  begin
    UpdateCSH610(AObjType,ACustNo,AAccNo,0,0,ABillNo,0,ADate,AAmount,'','','DEL');
  end;
  SYSDM.qryQuery.Close;
  SYSDM.qryQuery.SQL.Clear;
  SYSDM.qryQuery.SQL.Add('delete from CSH510B where C510B_001='+''''+ACode+'''');
  SYSDM.qryQuery.ExecSQL;
  SYSDM.qryQuery.Close;
  SYSDM.qryQuery.SQL.Clear;
  SYSDM.qryQuery.SQL.Add('delete from CSH510A where C510A_001='+''''+ACode+'''');
  SYSDM.qryQuery.ExecSQL;
  //取上条记录的日期&编号
  GetPriorRecord(AAccNo,ADate,ABillNo,ADate,ABillNo);
  //计算余额
  ReCalcBalance(AAccNo, ADate, ABillNo);
end;

procedure TCsh510_02Form.GetDataInfo;
begin
  inherited;
//主界面
  //收支类型(1=收入单,2=支出单,3=转帐单,4=借入单,5=借出单,6=还入单,7=还出单)
  edtCode.Text:=ADOQuery1.fieldByName('C510A_001').AsString;         //收支单号
  cbAcct.ItemIndex:=cbAcct.Items.IndexOf(ADOQuery1.fieldByName('C550_002').AsString);  //帐户名称
  case ADOQuery1.FieldByName('C510A_004').AsInteger of
    1:cbType.ItemIndex:=0;
    2:cbType.ItemIndex:=1;
    4:cbType.ItemIndex:=2;
    5:cbType.ItemIndex:=3;
    6:cbType.ItemIndex:=4;
    7:cbType.ItemIndex:=5;
  end;
  cbTypeChange(cbType);
  edtBillNo.Text:=ADOQuery1.fieldByName('C510A_002').AsString;       //顺序编号
  cbFrom.ItemIndex:=ADOQuery1.FieldByName('C510A_006').Value;        //来源类型(0=手工输入,1=销售定单,2=采购定单,3=任务工单)
  cbFromChange(cbFrom);
  edtDate.Date:=ADOQuery1.FieldByName('C510A_010').Value;            //日期
  edtPerson.Text:=ADOQuery1.FieldByName('H150_002').Value;           //录入员工
  edtPersonName.Text:=ADOQuery1.FieldByName('H150_003').Value;       //录入员工
  qryHrm150.Locate('H150_002',edtPerson.Text,[]);                    //调整数据
  edtOrgCode.Text:=ADOQuery1.FieldByName('C510A_014').AsString;      //原始单号
  cbObj.ItemIndex:=ADOQuery1.FieldByName('C510A_007').AsInteger;     //对象类型(0=客户,1=员工,2=空白)
  cbObjChange(cbObj);
  edtAmount.Text:=ADOQuery1.FieldByName('C510A_009').AsString;       //金额
  memRemark.Text:=ADOQuery1.FieldByName('C510A_015').AsString;       //备注

  if edtCust.Enabled then
  begin
    if qryOrd150.Locate('FNo',ADOQuery1.FieldByName('C510A_008').Value,[]) then
    begin
      edtCust.Text:=qryOrd150.FieldByName('FCode').AsString;       //编号
      edtCustName.Text:=qryOrd150.FieldByName('FName').AsString;   //名称
    end else
    begin
      edtCust.Text:='';
      edtCustName.Text:='';
    end;
  end;
//明细表
  GetDetailData;
  edtCreateDate.Text:=ADOQuery1.fieldByName('C510A_016').AsString;
  edtCreateBy.Text:=ADOQuery1.fieldByName('C510A_017').AsString;
  edtUpdateDate.Text:=ADOQuery1.fieldByName('C510A_018').AsString;
  edtUpdateBy.Text:=ADOQuery1.fieldByName('C510A_019').AsString;
end;

procedure TCsh510_02Form.InsertEvent;
begin
  inherited;
//新增时更新界面
  edtCode.Text:='';
  cbAcct.ItemIndex:=-1;
  cbType.ItemIndex:=0;
  cbTypeChange(cbType);
  //取单据编号
  edtDate.Date:=GetServerDate;
  edtBillNo.Text:=GetBillNo(edtDate.Date);
  cbFrom.ItemIndex:=0;
  edtPerson.Text:='';
  edtPersonName.Text:='';
  edtOrgCode.Text:='';
  cbObj.ItemIndex:=0;
  edtCust.Text:='';
  edtCustName.Text:='';
  edtAmount.Text:='0.0';
  memRemark.Text:='';
  adsCsh510B.Close;
  adsCsh510B.CreateDataSet;
  SetDBGridA(cbFrom.ItemIndex);
  edtCreateDate.Text:=FormatDateTime('yyyy-mm-dd hh:mm:ss',GetServerDate);
  edtCreateBy.Text:=AUserName;
  edtUpdateDate.Text:=FormatDateTime('yyyy-mm-dd hh:mm:ss',GetServerDate);
  edtUpdateBy.Text:=AUserName;  
end;

procedure TCsh510_02Form.OpenData(ACode: String);
begin
  if ACode='' then AMode:='ADD' else AMode:='UPD';
  ADOQuery1.DisableControls;
  ADOQuery1.Close;
  ADOQuery1.SQL.Clear;
  ADOQuery1.SQL.Add('Select A.*,B.C550_002,C.H150_002,C.H150_003');
  ADOQuery1.SQL.Add(' from CSH510A A,CSH550 B,HRM150 C');
  ADOQuery1.SQL.Add(' where C510A_003=C550_001 and A.C510A_012=C.H150_001');
  ADOQuery1.SQL.Add(' Order By C510A_001');
  ADOQuery1.Open;
  ADOQuery1.Locate('C510A_001',ACode,[]);
  ADOQuery1.EnableControls;
//  ADOQuery1AfterScroll(ADOQuery1);  
end;

procedure TCsh510_02Form.ReportGetValue(const ParName: String;
  var ParValue: Variant);
begin
  inherited;

end;

//取票据编号
//ADateTime:日期
function GetBillNo(ADateTime:TDateTime):string;
begin
  SYSDM.qryQuery.Close;
  SYSDM.qryQuery.SQL.Clear;
  //可能需要修改
  SYSDM.qryQuery.SQL.Add('select max(C500_004) from CSH500 where C500_002<>0 and C500_003='+GetDateString(ADateTime));
  SYSDM.qryQuery.Open;
  if SYSDM.qryQuery.Fields[0].IsNull then
    Result:='1'
  else
    Result:=IntToStr(SYSDM.qryQuery.Fields[0].Value+1);
  SYSDM.qryQuery.Close;
end;
procedure TCsh510_02Form.SetEmptyInit;
begin

⌨️ 快捷键说明

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