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

📄 ap_enter_purchasepaymenth.pas

📁 一个MRPII系统源代码版本
💻 PAS
字号:
unit Ap_Enter_PurchasePaymenth;

Interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Base_Entry_Head, Menus, Db, ActnList, AdODB, Grids, DBGridEh, StdCtrls,
  ExtCtrls, ComCtrls, ToolWin, jpeg, ExtPrintReport;

Type
  TFrm_Ap_Enter_PurchasePaymenth = Class(TFrm_Base_Entry_Head)
    AdoQry_HeadPayJournalID: TFloatField;
    AdoQry_HeadVendorCode: TStringField;
    AdoQry_HeadCURRENCYCode: TStringField;
    AdoQry_HeadEmployeeCode: TStringField;
    AdoQry_HeadPayModeCode: TStringField;
    AdoQry_HeadPayDATE: TDateTimeField;
    AdoQry_HeadPayAmount: TFloatField;
    AdoQry_HeadPayBillNO: TStringField;
    AdoQry_HeadPayRemArk: TStringField;
    AdoQry_HeadPayInputdate: TDateTimeField;
    AdoQry_HeadRemArkNo: TStringField;
    AdoQry_HeadExchRate: TFloatField;
    AdoQry_HeadPayAmountC: TFloatField;
    AdoQry_HeadCreateDate: TDateTimeField;
    AdoQry_HeadCreateEmployeeCode: TStringField;
    AdoQry_HeadEditDate: TDateTimeField;
    AdoQry_HeadEdItEmployeeCode: TStringField;
    AdoQry_HeadISCredence: TIntegerField;
    AdoQry_HeadVendorName: TStringField;
    AdoQry_HeadPayModeName: TStringField;
    AdoQry_HeadcurrencyName: TStringField;
    AdoQry_HeadEmployeeName: TStringField;
    procedure Act_DeleteExecute(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure Act_ModifyExecute(Sender: TObject);
  private
    { Private declarations }
    function ApCheckout(Month: String): Boolean;                   //结算日期检查
    procedure Delete_Backup(Action_flag:string);                   //插入删除日志文件
  public
    { Public declarations }
    procedure InitForm(AdOConnection:TAdOConnection;ReadOnly:Boolean);Override;
    function SetDeleteSql:String;Override;
  end;

var
  Frm_Ap_Enter_PurchasePaymenth: TFrm_Ap_Enter_PurchasePaymenth;

implementation

uses Ap_Enter_PurchasePayment, Sys_Global;

{$R *.DFM}

{ TFrm_Ap_Enter_PurchasePaymenth }

procedure TFrm_Ap_Enter_PurchasePaymenth.InitForm(
  AdOConnection: TAdOConnection; ReadOnly: Boolean);
begin
  inherited;
  //Act_Modify.Enabled :=False;
  //Act_Modify.Visible :=False;
  SelectFromSQL:='select PayJournal.*,'+
               //'  PayJournal.VendorCode,'+
               '  Vendor.VendorName,'+
               //'  PayJournal.PayModeCode,'+
               '  PayMode.PayModeName ,'+
               //'  PayJournal.ExchRate,'+
               '  currency.currencyName,'+
               '  Employee.EmployeeName'+
               //'  PayJournal.PayModeCode'+
               ' from PayJournal left join Vendor '+
               '  on PayJournal.VendorCode=Vendor.VendorCode '+
               '  left join PayMode '+
               '  on PayJournal.PayModeCode=PayMode.PayModeCode '+
               '  left join currency '+
               '  on PayJournal.currencyCode=currency.currencyCode join '+
               ' Employee on Employee.EmployeeCode=PayJournal.EmployeeCode';
  OrderByFields:='VendorCode,PayDate';
  GetData;
  Frm_Entry_Body:=TFrm_Ap_Enter_PurchasePayment.Create(Self);
end;

function TFrm_Ap_Enter_PurchasePaymenth.SetDeleteSql: String;
begin
  Result:=' delete PayJournal where PayBillno='''+AdoQry_Head.fieldbyname('PayBillno').asstring+'''' ;
end;

procedure TFrm_Ap_Enter_PurchasePaymenth.Act_DeleteExecute(
  Sender: TObject);
var
  tmpAdoQry:TAdoQuery;
  Billid:string;
begin
  //inherited;
  if (not AdoQry_Head.IsEmpty)and (DispInfo(' 真的删除当前记录吗? ',2)='y')then
  begin
    if not ApCheckout(copy (AdoQry_Head.fieldbyname('PayInputdate').asString,1,7)) then
    begin
      DispInfo('不允许删除已结帐月份记录!',1);
      abort;
    end;
    Executesql(AdoQry_tmp,'select PayJournalId from PayJournal  where PayBillno='''+AdoQry_Head.fieldbyname('PayBillno').asstring+'''',0);
    Billid:=AdoQry_tmp.fieldbyname('PayJournalId').asstring;
    if Billid='' then
    begin
      //dispinof('',3);
      abort;
    end;
    dbconnect.beginTrans ;
    try
     { Executesql(AdoQry_tmp,' update ApInvoice'
                           +' set ApInvoice.ApPayFlag=2, '
                                 +'ApInvoice.ApPayedAmount=ApInvoice.ApPayedAmount-PayJournalline.PayedAmount'
                           +' from '
                                 +'(select PayJournalline.ApInvoiceid'
                                         +',PayJournalline.PayedAmount'
                                 +'  from PayJournal left join PayJournalline'
                                 +'  on PayJournal.PayJournalid=PayJournalline.PayJournalid'
                                 +' where PayJournal.PayBillNo='''+doQry_Head.fieldbyname('PayBillNo').asstring+''''+')'
                                 +' PayJournalline'
                           +' where PayJournalline.ApInvoiceId=ApInvoice.ApInvoiceId',1);}
      tmpAdoQry:=TAdoQuery.Create(nil);                           
      try
        tmpAdoQry.EnableBCD :=False;
        tmpAdoQry.Connection :=AdoQry_tmp.Connection ;
       { //如果有预付款,先删除预付款的发票;
        Executesql(AdoQry_tmp,'delete from ApInvoice  where  ApInvoiceno='+quotedstr(AdoQry_Head.fieldbyname('PayBillNO').asstring+'/Y'),1);}
        with tmpAdoQry do
        begin
          Close;
          sql.clear;
          sql.text:=' select PayJournalline.ApInvoiceid '
                   +' ,PayJournalline.PayedAmount'
                   +' from PayJournalline left join PayJournal '
                   +' on PayJournal.PayJournalid=PayJournalline.PayJournalid'
                   +' where PayJournal.PayBillNo='''+AdoQry_Head.fieldbyname('PayBillNo').asstring+'''' ;
          open;
          tmpAdoQry.First;
          while not tmpAdoQry.eof do
          begin
            AdoQry_tmp.Close;
            AdoQry_tmp.SQL.clear ;
            AdoQry_tmp.SQL.text:=' update ApInvoice set ApPayFlag= case '+
                       ' when ApPayedAmount-('+tmpAdoQry.fieldbyname('PayedAmount').asstring+')'+'<=0 then 2'+
                       ' else 1 end ,'
                                +' ApPayedAmount=ApPayedAmount-('+tmpAdoQry.fieldbyname('PayedAmount').asstring+')'
                                +' ,ApPayedAmountc=ApPayedAmountc-('+floattostr(tmpAdoQry.fieldbyname('PayedAmount').asfloat*
                                        AdoQry_Head.fieldbyname('ExchRate').asfloat)+')'
                                +' where ApInvoiceId='+tmpAdoQry.fieldbyname('ApInvoiceId').asstring;
            AdoQry_tmp.execSQL;
            tmpAdoQry.next;
          end;
        end;
      finally
        tmpAdoQry.Free;
      end;
      AdoQry_tmp.Close;
      AdoQry_tmp.SQL.clear ;
      AdoQry_tmp.SQL.Text:=' delete from PayJournalline where PayJournalid='+Billid
                          +' delete from PayJournal where PayJournalid='+Billid;
      AdoQry_tmp.ExecSQL;
      AdoQry_Head.Delete;
      Delete_Backup('D');   //插入删除日志文件
      dbconnect.CommitTrans ;
    except
      dbconnect.RollBackTrans ;
      DispInfo(' 无法删除当前记录,可能已经被其他数据表引用!',1);
      Abort;
    end;
  end;
end;

procedure TFrm_Ap_Enter_PurchasePaymenth.FormDestroy(Sender: TObject);
begin
  inherited;
  Frm_Ap_Enter_PurchasePaymenth:=nil;
end;

procedure TFrm_Ap_Enter_PurchasePaymenth.Act_ModifyExecute(
  Sender: TObject);
var
  PayAmountH,PayAmountB:double;
  PayBillid:string;
begin
  PayAmountH:=0.00;
  PayAmountB:=0.00;
  with AdoQry_tmp do
  begin
    Close;
    sql.clear;
    sql.text:=' select PayJournalID from PayJournal '+
              ' where PayJournal.PayBillNO='''+AdoQry_Head.fieldbyname('PayBillNO').asstring+'''';
    open;
    PayBillid:=fieldbyname('PayJournalID').asstring;
  end;
  with AdoQry_tmp do
  begin
    Close;
    sql.clear;
    sql.text:=' select  sum(isnull(PayJournalLine.PayedAmount,0)) as PayAmountb'+
              ' from PayJournalLine  '+
               ' where PayJournalLine.PayJournalID='+PayBillid;

    open;
    PayAmountB:=fieldbyname('PayAmountb').asfloat;
    Close;
    sql.clear;
    sql.text:=' select  PayAmount  from PayJournal where PayJournalID='+PayBillid;
    open;
    PayAmounth:=fieldbyname('PayAmount').asfloat;
  end;
  if PayAmountH-PayAmountB<=0 then
  begin
    DispInfo('付款余额小于等于零不能修改!',3);
    abort;
  end;
  inherited;

end;

function TFrm_Ap_Enter_PurchasePaymenth.ApCheckout(Month: String): Boolean;
var
  str,str1:string;
begin
  Result:=True;
  With AdoQry_Tmp do
  begin
    Close;
    sql.clear;
    sql.Add('select ApParamValuec '+
                    ' from ApParam '+
                    ' where ApParamCode=''clsperiod''');
    open;
    str:=fieldbyname('ApParamValuec').asstring;
    if str<>'' then
    begin
      if strtodate(Month+'.01') >strtodate(str+'.01') then
        Result:=True
      else
        Result:=False;
    end;
  end;
end;


procedure TFrm_Ap_Enter_PurchasePaymenth.Delete_Backup(
  Action_flag: string);
var
  Sql_Txt:string;
begin
  with AdoQry_Head do
  Sql_Txt:='insert into PayJournalLog(LogDate,'+
                                'LogOperatorCode,'+
                                'LogAction,'+
                                'PayJournalId,'+
                                'VendorCode,'+
                                'CurrencyCode,'+
                                'EmployeeCode,'+
                                'PayModeCode,'+
                                'PayDate,'+
                                'PayAmount,'+
                                'PayBillNo,'+
                                'PayRemArk)     '+
                   'Values(getdate(),'+
                   ' '''+fieldbyname('EmployeeCode').asstring+''','+
                   format('''%s''',[action_flag])+','+
                   ' '''+fieldbyname('PayJournalId').asstring+''','+
                   ' '''+fieldbyname('VendorCode').asstring+''','+
                   ' '''+fieldbyname('CurrencyCode').asstring+''','+
                   ' '''+fieldbyname('EmployeeCode').asstring+''','+
                   ' '''+fieldbyname('PayModeCode').asstring+''','+
                   ' '''+fieldbyname('PayDate').asstring+''','+
                   ' '''+fieldbyname('PayAmount').asstring+''','+
                   ' '''+fieldbyname('PayBillNo').asstring+''','+
                   ' '''+fieldbyname('PayRemArk').asstring+''')';
  with AdoQry_tmp do
  begin
    Close;
    sql.clear ;
    sql.text:=sql_Txt;
    execsql;
  end;
end;


end.

⌨️ 快捷键说明

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