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

📄 ar_enter_saleinvoice4_c1.pas

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

Interface

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

Type
  TFrm_Ar_Enter_SaleInvoice4_C1 = Class(TFrm_Base_Qry)
    btn_ok: TButton;
    btn_Cancel: TButton;
    Button1: TButton;
    AdoQry_Maincheckflag: TIntegerField;
    AdoQry_MainInvBillId: TFloatField;
    AdoQry_MainInvBillNo: TStringField;
    AdoQry_MainWHCode: TStringField;
    AdoQry_MainWhPositionCode: TStringField;
    AdoQry_MainInvBillDate: TDateTimeField;
    AdoQry_MainInvBillMonth: TStringField;
    AdoQry_MaInBillTypeCode: TStringField;
    AdoQry_MaInBillType2Code: TStringField;
    AdoQry_MaInvendorCode: TStringField;
    AdoQry_MainEmployeeCode: TStringField;
    AdoQry_MainDeptCode: TStringField;
    AdoQry_MainCUSTOMERCode: TStringField;
    AdoQry_MainCURRENCYCode: TStringField;
    AdoQry_MainPONO: TStringField;
    AdoQry_MainMONO: TStringField;
    AdoQry_MainInvBillValuation: TIntegerField;
    AdoQry_MainInvBillWHCHCK: TIntegerField;
    AdoQry_MainWH_EmployeeCode: TStringField;
    AdoQry_MainInvBillFINCHCK: TIntegerField;
    AdoQry_MainFin_EmployeeCode: TStringField;
    AdoQry_MainPRINTTIMES: TIntegerField;
    AdoQry_MainSaleType: TStringField;
    AdoQry_MainShiftType: TStringField;
    AdoQry_MainInvBillRemArk: TStringField;
    AdoQry_MainInvBillInfo: TStringField;
    AdoQry_MainOWhPositionCode: TStringField;
    AdoQry_MainInvBillStkChck: TIntegerField;
    AdoQry_MainStk_EmployeeCode: TStringField;
    AdoQry_MainInvBillTmpFlag: TIntegerField;
    AdoQry_MainOverPlan: TIntegerField;
    AdoQry_MainPOLineNo: TIntegerField;
    AdoQry_MainMoLineNO: TIntegerField;
    AdoQry_MainInvBillCreateTime: TDateTimeField;
    AdoQry_MainSfc_EmployeeCode: TStringField;
    AdoQry_MainSal_EmployeeCode: TStringField;
    AdoQry_MainWH_EmployeeCode2: TStringField;
    AdoQry_MainInvBilltaxrate: TFloatField;
    AdoQry_MainMpsSale: TIntegerField;
    AdoQry_MainopBill: TIntegerField;
    AdoQry_MainSysBill: TIntegerField;
    AdoQry_MainOldInvBillNo: TStringField;
    AdoQry_MainPriceAdjustBill: TIntegerField;
    AdoQry_MainWipWaster: TIntegerField;
    AdoQry_MainAmountAdjust: TIntegerField;
    AdoQry_MainShipType: TIntegerField;
    AdoQry_MainShipAddresSCode: TStringField;
    AdoQry_MainShipModeCode: TStringField;
    AdoQry_MainSaleEmployeeCode: TStringField;
    AdoQry_MainPayTermCode: TStringField;
    AdoQry_MainInvoiceNo: TStringField;
    AdoQry_MainRemArk: TStringField;
    AdoQry_MainRemArk1: TStringField;
    AdoQry_MainTotalInvBillAmount: TFloatField;
    AdoQry_MainTotalInvBillNoTaxAmount: TFloatField;
    AdoQry_MainTotalInvBillnoTaxAmountc: TFloatField;
    AdoQry_MainTotalInvBillAmountc: TFloatField;
    AdoQry_MaincurrencyName: TStringField;
    AdoQry_Maincurrencyflag: TStringField;
    AdoQry_MainDeptName: TStringField;
    AdoQry_MainDeptflag: TStringField;
    AdoQry_MainEmployeeName: TStringField;
    AdoQry_MainEmployeeflag: TStringField;
    AdoQry_MainPayTermName: TStringField;
    AdoQry_MainPayTermflag: TStringField;
    AdoQry_MainShipModeName: TStringField;
    AdoQry_MainShipModeflag: TStringField;
    AdoQry_MainSaleTypeName: TStringField;
    AdoQry_MainSaleTypeflag: TStringField;
    procedure FormDestroy(Sender: TObject);
    procedure btn_CancelClick(Sender: TObject);
    procedure DBGridEhTitleClick(Column: TColumnEh);
    procedure btn_okClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Button1Click(Sender: TObject);
    procedure AdoQry_MainTotalInvBillAmountGetText(Sender: TField;
      var Text: String; DisplayText: Boolean);
    procedure AdoQry_MainTotalInvBillNoTaxAmountGetText(Sender: TField;
      var Text: String; DisplayText: Boolean);
  private
  Flag:Boolean ;
    { Private declarations }
  public
   TaxRate : Double;//销售税率
   ShipNoStArt,ShipNoend,CustomerCode,CustomerName:string;
   DeptCode,DeptName,SaleTypeCode,SaleTypeName,SaleEmployeeCode,SaleEmployeeName :string;
  procedure InitForm(AdOConnection:TAdOConnection;ReadOnly:Boolean);Override;
    { Public declarations }
  end;

var
  Frm_Ar_Enter_SaleInvoice4_C1: TFrm_Ar_Enter_SaleInvoice4_C1;

implementation

uses Ar_Enter_SaleInvoice4_C, Ar_Enter_SaleInvoice4, Sys_Global;
{$R *.DFM}

{ TFrm_Sal_Enter_ShipOrder_C1 }

procedure TFrm_Ar_Enter_SaleInvoice4_C1.InitForm(
  AdOConnection: TAdOConnection; ReadOnly: Boolean);
var sqltext:string;
begin
  inherited;
  Frm_Sys_Condition:= TFrm_Ar_Enter_SaleInvoice4_C.Create(self);
  act_filter.Execute;
  try
  Executesql(AdoQry_tmp,'drop table #rdddd',1);
  except
  end;
  Sqltext:='Select checkflag=1,  '
               +  '        InvOutBill.* ,           '
               +  '        currency.currencyName,      '
               +  '        InvOutBill.currencyCode+'' ''+currency.currencyName as currencyflag, '
               +  '        Dept.DeptName,  '
               +  '        InvOutBill.DeptCode+'' ''+Dept.DeptName as Deptflag,  '
               +  '        Employee.EmployeeName,                                      '
               +  '        InvOutBill.SaleEmployeeCode+'' ''+Employee.EmployeeName as Employeeflag, '
               +  '        PayTerm.PayTermName,'
               +  '        InvOutBill.PayTermCode+'' ''+PayTerm.PayTermName as PayTermflag, '
               +  '        ShipMode.ShipModeName,      '
               +  '        InvOutBill.ShipModeCode+'' ''+ShipMode.ShipModeName as ShipModeflag, '
               +  '        SaleType.SaleTypeName,    '
               +  '        InvOutBill.SaleType+'' ''+SaleType.SaleTypeName as SaleTypeflag  '
               +'   into #rdddd  '
               +  ' From InvOutBill              '
               +  ' left Join Dept                      '
               +  '   On Dept.DeptCode=InvOutBill.DeptCode  '
               +  ' left Join Employee                                 '
               +  '   On Employee.EmployeeCode=InvOutBill.SaleEmployeeCode  '
               +  ' left Join PayTerm                                     '
               +  '   On PayTerm.PayTermCode=InvOutBill.PayTermCode '
               +  ' left join ShipMode                                     '
               +  '   on InvOutBill.ShipModeCode=ShipMode.ShipModeCode '
               +  ' left join currency                                        '
               +  '   on InvOutBill.currencyCode=currency.currencyCode '
               +  ' left join SaleType                                        '
               +  '  on InvOutBill.SaleType=SaleType.SaleTypeCode  '
               + '  where InvOutBill.BillTypeCode In (''0205'',''0206'') ' 
                +'   and exists (select * from InvOutBillLine where InvOutBillLIne.InvBillId=InvOutBill.InvBillId )   '
                +' and  ((InvOutBill.InvoiceNo='''') Or(InvOutBill.InvoiceNo is Null))And InvOutBill.CustomerCode='''+CustomerCode+''''
                +'    And InvOutBill.InvBillNo Between '''+ShipNoStArt+''' and '''+ShipNoend+'''   '+' and InvBillWhChCk=1 '
                +'    and ShipType=2 ';
  Executesql(AdoQry_Main,sqltext,1);
  selectfromsql:='select * from #rdddd Order by InvBillDate,InvBillNo';
  getdata;
  Flag:=False;
//  DBGridEhTitleClick(DBGridEh.Columns[0] );
end;

procedure TFrm_Ar_Enter_SaleInvoice4_C1.FormDestroy(Sender: TObject);
begin
  inherited;
  Frm_Ar_Enter_SaleInvoice4_C1:=nil;
end;

procedure TFrm_Ar_Enter_SaleInvoice4_C1.btn_CancelClick(Sender: TObject);
begin
  inherited;
  Frm_Ar_Enter_SaleInvoice4_C1.Close;
end;

procedure TFrm_Ar_Enter_SaleInvoice4_C1.DBGridEhTitleClick(
  Column: TColumnEh);
var
  BookMArk:String;
begin
  inherited;
  If Trim(Column.Title.Caption)<>'标记' Then
    Abort;
  If AdoQry_Main.RecordCount=0 Then
    Abort;
  BookMArk:=AdoQry_Main.BookmArk;
  If Not Flag Then
  begin
    AdoQry_Main.First;
    While Not AdoQry_Main.Eof Do
    begin
      AdoQry_Main.Edit;
      AdoQry_Main.fieldbyname('checkflag').AsInteger:=1;
      AdoQry_Main.Post;
      AdoQry_Main.Next;
    end;
  end
  Else
  begin
    AdoQry_Main.First;
    While Not AdoQry_Main.Eof Do
    begin
      AdoQry_Main.Edit;
      AdoQry_Main.fieldbyname('Checkflag').AsInteger:=0;
      AdoQry_Main.Post;
      AdoQry_Main.Next;
    end;
  end;
  AdoQry_Main.BookmArk:=BookMArk;
  Flag:=Not Flag;
end;

procedure TFrm_Ar_Enter_SaleInvoice4_C1.btn_okClick(Sender: TObject);
var
  I:boolean;
  isFirst:boolean;
  lastcurrency:string;
  LastPayTermCode : String;
  LastBillTypeCode : String;
begin
  inherited;
  I:=False;
  if AdoQry_Main.RecordCount=0 then
    begin
     DispInfo('无销售退货单!',1);
     abort;
    end;
  AdoQry_Main.First;
  While (Not AdoQry_Main.Eof)  do
  begin
    If AdoQry_Main.fieldbyname('Checkflag').AsInteger>0  Then
    begin
      DeptCode:=AdoQry_Main.fieldbyname('DeptCode').asstring;
      DeptName:=AdoQry_Main.fieldbyname('DeptName').asstring;
      SaleTypeCode:=AdoQry_Main.fieldbyname('SaleType').asstring;
      SaleTypeName:=AdoQry_Main.fieldbyname('SaleTypeName').asstring;
      SaleEmployeeCode:=AdoQry_Main.fieldbyname('SaleEmployeeCode').asstring;
      SaleEmployeeName:=AdoQry_Main.fieldbyname('EmployeeName').asstring;
      lastcurrency:=AdoQry_Main.fieldbyname('currencyCode').asstring;
      LastPayTermCode := AdoQry_Main.fieldbyname('PayTermCode').AsString;
      LastBillTypeCode := AdoQry_Main.fieldbyname('BillTypeCode').AsString;
      TaxRate := AdoQry_Main.fieldbyname('InvBillTaxRate').AsFloat;
      I:=True;
      Break;
    end;
    AdoQry_Main.Next;
  end;
  AdoQry_Main.Next;
  while not AdoQry_Main.Eof do
    begin
    If AdoQry_Main.fieldbyname('Checkflag').AsInteger>0  Then
     if not( (AdoQry_Main.fieldbyname('currencyCode').asstring=lastcurrency)
         and (AdoQry_Main.fieldbyname('PayTermCode').asstring=lastPayTermCode)
         and (AdoQry_Main.fieldbyname('InvBillTaxRate').AsFloat=TaxRate) 
         and (AdoQry_Main.fieldbyname('BillTypeCode').AsString=LastBillTypeCode)) then
       begin
         DispInfo('只有单据类型、货币、税率、付款条款相同的退货单才能开在一张发票上!',1);
         abort;
       end;
     AdoQry_Main.Next;
    end;
  If I=True Then
  begin
    Frm_Ar_Enter_SaleInvoice4:=TFrm_Ar_Enter_SaleInvoice4.Create(Application);
    Frm_Ar_Enter_SaleInvoice4.SetSysParam(UserCode,ModuleCode,MenuId,LoginDate);
    Frm_Ar_Enter_SaleInvoice4.InitForm(DbConnect,'Add',AdoQry_Main);
    Frm_Ar_Enter_SaleInvoice4_C1.Hide;
    Frm_Ar_Enter_SaleInvoice4.ShowModal;
    if Frm_Ar_Enter_SaleInvoice4<>nil then
      Frm_Ar_Enter_SaleInvoice4.Close;
    if  Frm_Ar_Enter_SaleInvoice4_C1<>nil then
      Frm_Ar_Enter_SaleInvoice4_C1.Close;
  end
  Else
  begin
    DispInfo('没有选定记录,不能执行新增操作!',3);
    Abort;
  end;
end;

procedure TFrm_Ar_Enter_SaleInvoice4_C1.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  inherited;
  try
   Executesql(AdoQry_tmp,'drop table #rdddd',1);
  except
  end;
end;

procedure TFrm_Ar_Enter_SaleInvoice4_C1.Button1Click(Sender: TObject);
var sqltext:string;
begin
  inherited;
  act_filter.Execute;
  try
    Executesql(AdoQry_tmp,'drop table #rdddd',1);
  except

  end;
  Sqltext:='Select checkflag=1,  '
               +  '        InvOutBill.* ,           '
               +  '        currency.currencyName,      '
               +  '        InvOutBill.currencyCode+'' ''+currency.currencyName as currencyflag, '
               +  '        Dept.DeptName,  '
               +  '        InvOutBill.DeptCode+'' ''+Dept.DeptName as Deptflag,  '
               +  '        Employee.EmployeeName,                                      '
               +  '        InvOutBill.SaleEmployeeCode+'' ''+Employee.EmployeeName as Employeeflag, '
               +  '        PayTerm.PayTermName,'
               +  '        InvOutBill.PayTermCode+'' ''+PayTerm.PayTermName as PayTermflag, '
               +  '        ShipMode.ShipModeName,      '
               +  '        InvOutBill.ShipModeCode+'' ''+ShipMode.ShipModeName as ShipModeflag, '
               +  '        SaleType.SaleTypeName,    '
               +  '        InvOutBill.SaleType+'' ''+SaleType.SaleTypeName as SaleTypeflag  '
               +'   into #rdddd  '
               +  ' From InvOutBill              '
               +  ' left Join Dept                      '
               +  '   On Dept.DeptCode=InvOutBill.DeptCode  '
               +  ' left Join Employee                                 '
               +  '   On Employee.EmployeeCode=InvOutBill.SaleEmployeeCode  '
               +  ' left Join PayTerm                                     '
               +  '   On PayTerm.PayTermCode=InvOutBill.PayTermCode '
               +  ' left join ShipMode                                     '
               +  '   on InvOutBill.ShipModeCode=ShipMode.ShipModeCode '
               +  ' left join currency                                        '
               +  '   on InvOutBill.currencyCode=currency.currencyCode '
               +  ' left join SaleType                                        '
               +  '  on InvOutBill.SaleType=SaleType.SaleTypeCode  '
               + '  where  InvOutBill.BillTypeCode in (''0205'',''0206'') '
                +'   and exists (select * from InvOutBillLine where InvOutBillLIne.InvBillId=InvOutBill.InvBillId )   '
                +'   and  ((InvOutBill.InvoiceNo='''') Or(InvOutBill.InvoiceNo is Null))And InvOutBill.CustomerCode='''+CustomerCode+''''
                +'   And InvOutBill.InvBillNo Between '''+ShipNoStArt+''' and '''+ShipNoend+'''   '+' and InvBillWhChCk=1 '
                +'   and ShipType=2 ';
  Executesql(AdoQry_Main,sqltext,1);
  selectfromsql:='select * from #rdddd Order by InvBillDate,InvBillNo';
  getdata;
  Flag:=False;
end;

procedure TFrm_Ar_Enter_SaleInvoice4_C1.AdoQry_MainTotalInvBillAmountGetText(
  Sender: TField; var Text: String; DisplayText: Boolean);
begin
  inherited;
  Text := FloatToStr(-AdoQry_Main.fieldbyname('TotalInvBillAmount').AsFloat);
end;

procedure TFrm_Ar_Enter_SaleInvoice4_C1.AdoQry_MainTotalInvBillNoTaxAmountGetText(
  Sender: TField; var Text: String; DisplayText: Boolean);
begin
  inherited;
  Text := FloatToStr(-AdoQry_Main.fieldbyname('TotalInvBillNoTaxAmount').AsFloat);

end;

end.

⌨️ 快捷键说明

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