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

📄 frm_mainfee.pas

📁 这是一个基于delphi平台的物流空运管理系统!
💻 PAS
字号:
unit Frm_MainFee;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Frm_Cargo, DB, ADODB, StdCtrls, ComCtrls, Buttons, ExtCtrls,
  XPMenu;

type
  TFrmMainFee = class(TFrmCargo)
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label7: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label8: TLabel;
    Label82: TLabel;
    Label85: TLabel;
    Label9: TLabel;
    Label10: TLabel;
    Label11: TLabel;
    Label1: TLabel;
    Label87: TLabel;
    Label12: TLabel;
    Label14: TLabel;
    Label15: TLabel;
    Panel1: TPanel;
    BitBtn3: TBitBtn;
    BitBtn4: TBitBtn;
    EdtAcount: TEdit;
    EdtRemark: TEdit;
    ComFeeType: TComboBox;
    HappenDate: TDateTimePicker;
    ComObject: TComboBox;
    ComFeeName: TComboBox;
    EdtOperator: TEdit;
    Rece: TRadioButton;
    Deal: TRadioButton;
    ComCurrencyType: TComboBox;
    EdtRate: TEdit;
    ComHAWB: TComboBox;
    EdtBill: TEdit;
    EdtUnitPrice: TEdit;
    MemCusCode: TMemo;
    EdtInvoice: TEdit;
    ComOther: TComboBox;
    EdtBxh: TEdit;
    PayToDate: TEdit;
    QryTemp: TADOQuery;
    QryTemp2: TADOQuery;
    procedure FormActivate(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure ComFeeTypeExit(Sender: TObject);
    procedure BitBtn3Click(Sender: TObject);
    procedure BitBtn4Click(Sender: TObject);
  private
    { Private declarations }
  public
    IsEdit: Boolean;
    Alone: Boolean;
    { Public declarations }
  end;

var
  FrmMainFee: TFrmMainFee;

implementation

uses Frm_MainFeeGrid, Frm_Main;

{$R *.dfm}

procedure TFrmMainFee.FormActivate(Sender: TObject);
var
  Fss: Tlocateoptions;
begin
  inherited;
  EdtOperator.Text := FrmMain.LoginName;
  happendate.date := date;
  if isedit then
  begin
    with QryTemp do
    begin
      close;
      sql.text := 'select * from fareinfo where fareno =''' +
        Frmmainfeegrid.varcode + '''';
      open;
    end;
    if QryTemp.recordcount > 0 then
    begin
      comhawb.text :=
        FrmMain.setcomboboxtext(qrytemp.fieldbyname('FileCode').asstring,
          comhawb);
      comhawb.Enabled := false;
      comfeetype.text :=
        FrmMain.SetComboBoxText(QryTemp.fieldbyname('faretype').asstring,
        comfeetype);
      comfeename.text :=
        FrmMain.SetComboBoxText(QryTemp.fieldbyname('farecode').asstring,
        comfeename);
      comobject.text :=
        FrmMain.SetComboBoxText(QryTemp.fieldbyname('cuscode').asstring,
          comobject);
      memcuscode.text := QryTemp.fieldbyname('cuscodename').asstring;
      edtacount.text := floattostr(QryTemp.fieldbyname('acount').asfloat);
      edtunitprice.text := QryTemp.fieldbyname('unitprice').asstring;
      edtoperator.text := QryTemp.fieldbyname('operator').asstring;
      happendate.date :=
        strtodatetime(QryTemp.fieldbyname('writedate').asstring);
      comcurrencytype.text :=
        FrmMain.setcomboboxtext(QryTemp.fieldbyname('currencytype').asstring,
        comcurrencytype);
      edtrate.text := QryTemp.fieldbyname('currencyrate').asstring;
      edtbill.text := QryTemp.fieldbyname('billno').asstring;
      edtinvoice.text := QryTemp.fieldbyname('invoiceno').asstring;
      edtbxh.text := QryTemp.fieldbyname('bxno').asstring;
      paytodate.text := QryTemp.fieldbyname('farepaytodate').asstring;
      edtremark.text := QryTemp.fieldbyname('remark').asstring;
      ComOther.text := QryTemp.fieldbyname('GoodsCode').asstring;
      if QryTemp.fieldbyname('recedeal').asinteger = 1 then
        rece.Checked := true
      else
        deal.Checked := true;
    end;
  end
  else
  begin
    if not alone then
    begin
      comhawb.text :=
        FrmMain.setcomboboxtext(frmMAINfeegrid.LV.Selected.Caption,
        comhawb);
      Comhawb.Enabled := false;
    end;
  end;
end;

procedure TFrmMainFee.FormCreate(Sender: TObject);
var
  sqlstr: string;
begin
  inherited;
  FrmMain.Full_ComboBox(comfeetype, 'faretype', 'farecode', 'cname');
  FrmMain.Full_ComboBox(comfeename, 'fareinformation', 'farecode', 'farecname');

  SqlStr := 'select * from Customerinfo';
  FrmMain.Full_FilterCombobox(comobject, SqlStr, 'cuscode', 'custcname');

  FrmMain.Full_ComboBox(comcurrencytype, 'currency', 'code', 'Cname');

  sqlstr := 'select * from Filetable where Dexecdate>=''' +
    datetimetostr(int(date - 60)) + '''';
  FrmMain.Full_FilterCombobox(comhawb, sqlstr, 'FileCode', 'MainCode');
end;

procedure TFrmMainFee.ComFeeTypeExit(Sender: TObject);
begin
  inherited;
  comfeetype.text := FrmMain.CheckComboBox(comfeetype);
end;

procedure TFrmMainFee.BitBtn3Click(Sender: TObject);
var
  ValueArray: array[0..20] of string;
  ArrayCount: integer;
  SqlStr: string;
  Codeget: string;
  Wentdutch: Boolean;
begin
  inherited;
  WentDutch := false;
  if frmmainfeegrid.lv.Selected.SubItems.Strings[5] = '1' then
  begin
    ShowMessage('相应主单纪录的完成标记已设为True,不能够再进行修改!' +
      chr(13) + '如果修改,请先清除完成标记,并重新进行统计!');
    exit;
  end;

  if isedit then
  begin
    {如果处于编辑状态,则测试一下是否是已分摊的费用}
    QryTemp2.Close;
    QryTemp2.SQL.Text:='Select * From FareInfo where relacode like ''%' + frmmainfeegrid.varcode + '%''';
    QryTemp2.Open;
    if FrmMain.RecordCount(QryTemp2) >= 1 then
    begin
      if
        MessageDlg('该费用记录已经分摊,继续后也不能够保存金额信息和应收应付,是否继续?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then
        WentDutch := true {已分摊费用的标记}
      else
        exit;
    end;
  end;

  if FrmMain.TestTextNumber(edtAcount.text, 'real') then
  else
  begin
    ShowMessage('请在费用数额中输入数值类型的信息');
    exit;
  end;

  if (comfeename.text = '') then
  begin
    ShowMessage('费用名称,费用对象不能为空');
    exit;
  end;

  if comcurrencytype.text = '' then
    comcurrencytype.text := comcurrencytype.Items.Strings[0];

  if edtrate.text = '' then
    edtrate.text := '1';

  if IsEdit then
  begin
    try
      sqlstr := '';
      FrmMain.UpStr(sqlstr, 'fareinfo ');
      FrmMain.UpStr(sqlstr, 'faretype', FrmMain.GetFieldText(comfeetype.text), ',');
      FrmMain.UpStr(sqlstr, 'farecode', FrmMain.getfieldtext(comfeename.text), ',');
      FrmMain.UpStr(sqlstr, 'cuscode', FrmMain.getfieldtext(comobject.text), ',');
      FrmMain.UpStr(sqlstr, 'cuscodename', memcuscode.lines.text, ',');
      if WentDutch then {如果是分摊费用,则不进行金额,应收应付,币种的保存}
      else
      begin
        FrmMain.UpStr(sqlstr, 'acount', strtofloat(edtacount.text), ',');
        if rece.Checked then
          FrmMain.UpStr(sqlstr, 'recedeal', 1, ',')
        else
          FrmMain.UpStr(sqlstr, 'recedeal', -1, ',');
        FrmMain.UpStr(sqlstr, 'currencytype',
          FrmMain.getfieldtext(comcurrencytype.text), ',');
        FrmMain.UpStr(sqlstr, 'currencyrate', edtrate.text, ',');
      end;
      FrmMain.UpStr(sqlstr, 'unitprice', edtunitprice.text, ',');
      FrmMain.UpStr(sqlstr, 'operator', edtoperator.text, ',');
      FrmMain.UpStr(sqlstr, 'writedate', datetimetostr(int(happendate.date)), ',');

      FrmMain.UpStr(sqlstr, 'billno', edtbill.text, ',');
      FrmMain.UpStr(sqlstr, 'invoiceno', edtinvoice.text, ',');
      FrmMain.UpStr(sqlstr, 'bxno', edtbxh.text, ',');
      FrmMain.UpStr(sqlstr, 'GoodsCode', ComOther.text, ',');
      FrmMain.UpStr(sqlstr, 'farepaytodate', paytodate.text, ',');
      FrmMain.UpStr(sqlstr, 'remark', edtremark.text, '');
      FrmMain.UpStr(sqlstr, 'fareno=', frmmainfeegrid.varcode, 'w');
      if FrmMain.execsql(sqlstr) then
      else
      begin
        ShowMessage('操作失误,记录未保存,请检查');
        exit;
      end;
      {编号   费用对象 应收  应付  费用类型名称 费用名称  币种 }
      ValueArray[0] := Frmmainfeegrid.Varcode;
      ValueArray[1] := memcuscode.lines.text;
      if rece.checked then
      begin
        ValueArray[2] := edtacount.text; //应收
        ValueArray[3] := ''; //应付
      end
      else
      begin
        ValueArray[2] := '';
        ValueArray[3] := edtacount.text;
      end;
      ValueArray[4] := FrmMain.GetFieldText(comfeetype.text,0);
      ValueArray[5] := FrmMain.GetFieldText(comfeename.text,0);
      ValueArray[6] := FrmMain.GetFieldText(comcurrencytype.text,0);
      ArrayCount := 6;
      FrmMain.RefeshOne(ValueArray, ArrayCount, FrmMainfeegrid.lv2);
      close;
    except
      ShowMessage('操作有失误,请检查!');
    end;
  end
  else
  begin
    try
      codeget := FrmMain.getcode('F');
      sqlstr := 'insert into fareinfo(fareno,FileCode,farecode,' +
        'cuscode,cuscodename,faretype,acount,unitprice,recedeal,writedate,operator,currencytype,' +
        'currencyrate,billno,invoiceno,bxno,farepaytodate,' +
        'opercwmark,GoodsCode,remark) values(';
      FrmMain.InsStr(sqlstr, CODEGET, ',');
      FrmMain.InsStr(sqlstr, FrmMain.getfieldtext(comhawb.text), ',');
      FrmMain.InsStr(sqlstr, FrmMain.getfieldtext(comfeename.text), ',');
      FrmMain.InsStr(sqlstr, FrmMain.GetFieldText(comobject.text), ',');
      FrmMain.InsStr(sqlstr, memcuscode.lines.text, ',');
      FrmMain.InsStr(sqlstr, FrmMain.GetFieldText(comfeetype.text), ',');
      FrmMain.InsStr(sqlstr, strtofloat(edtacount.text), ',');
      FrmMain.InsStr(sqlstr, edtunitprice.text, ',');
      if rece.Checked then
        FrmMain.InsStr(sqlstr, 1, ',')
      else
        FrmMain.InsStr(sqlstr, -1, ',');
      FrmMain.InsStr(sqlstr, datetimetostr(int(happendate.date)), ',');
      FrmMain.InsStr(sqlstr, edtoperator.text, ',');
      FrmMain.InsStr(sqlstr, FrmMain.getfieldtext(comcurrencytype.text), ',');
      FrmMain.InsStr(sqlstr, edtrate.text, ',');
      FrmMain.InsStr(sqlstr, edtbill.text, ',');
      FrmMain.InsStr(sqlstr, edtinvoice.text, ',');
      FrmMain.InsStr(sqlstr, edtbxh.text, ',');
      FrmMain.InsStr(sqlstr, paytodate.text, ',');
      FrmMain.InsStr(sqlstr, '业务操作', ',');
      FrmMain.InsStr(sqlstr, ComOther.text, ',');
      FrmMain.InsStr(sqlstr, edtremark.text, '');

      if FrmMain.execsql(sqlstr) then
      else
      begin
        ShowMessage('操作失误,记录未保存,请检查');
        exit;
      end;
      ValueArray[0] := codeget;
      ValueArray[1] := memcuscode.lines.text;
      if rece.checked then
      begin
        ValueArray[2] := edtacount.text; //应收
        ValueArray[3] := ''; //应付
      end
      else
      begin
        ValueArray[2] := '';
        ValueArray[3] := edtacount.text;
      end;
      ValueArray[4] := FrmMain.GetFieldText(comfeetype.text,0);
      ValueArray[5] := FrmMain.GetFieldText(comfeename.text,0);
      ValueArray[6] := FrmMain.GetFieldText(comcurrencytype.text,0);
      ArrayCount := 6;
      if alone then
      else
        FrmMain.AddListView(ValueArray, ArrayCount, Frmmainfeegrid.lv2);
      close;
    except
     ShowMessage('操作有失误,请检查!');
    end;
  end;
end;

procedure TFrmMainFee.BitBtn4Click(Sender: TObject);
begin
  inherited;
  Close;
end;

end.

⌨️ 快捷键说明

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