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

📄 sal_enter_saleorderh.pas

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

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_Sal_Enter_SaleOrderH = Class(TFrm_Base_Entry_Head)
    AdoQry_HeadCustomerCode: TStringField;
    AdoQry_HeadCustomerName: TStringField;
    AdoQry_HeadCustomerFalg: TStringField;
    AdoQry_HeadCreateDate: TDateTimeField;
    AdoQry_HeadSloNo: TStringField;
    AdoQry_HeadSaleTypeCode: TStringField;
    AdoQry_HeadSaleDeptCode: TStringField;
    AdoQry_HeadDeptName: TStringField;
    AdoQry_HeadSaleDeptFalg: TStringField;
    AdoQry_HeadSaleEmployeeCode: TStringField;
    AdoQry_HeadEmployeeName: TStringField;
    AdoQry_HeadSaleEmployeeFalg: TStringField;
    AdoQry_HeadCurrencyCode: TStringField;
    AdoQry_HeadCurrencyName: TStringField;
    AdoQry_HeadCurrencyFalg: TStringField;
    AdoQry_HeadTaxRate_Percent: TFloatField;
    AdoQry_HeadPayTermCode: TStringField;
    AdoQry_HeadSaleTermFlag: TStringField;
    AdoQry_HeadCreateEmployeeCode: TStringField;
    AdoQry_HeadEmployeeName_1: TStringField;
    AdoQry_HeadCreateEmployeeFalg: TStringField;
    AdoQry_HeadShipModeCode: TStringField;
    AdoQry_HeadShipModeName: TStringField;
    AdoQry_HeadShipModeFalg: TStringField;
    AdoQry_HeadShipAddresSCode: TStringField;
    AdoQry_HeadShipAddressName: TStringField;
    AdoQry_HeadShipAddressFalg: TStringField;
    AdoQry_HeadRemArk: TStringField;
    AdoQry_HeadTotalNoTaxAmount: TFloatField;
    AdoQry_HeadTotalTaxAmount: TFloatField;
    AdoQry_HeadPayTermName: TStringField;
    AdoQry_HeadEditDate: TDateTimeField;
    AdoQry_HeadEdItEmployeeCode: TStringField;
    AdoQry_HeadRemArk1: TStringField;
    AdoQry_HeadSaleTypeName: TStringField;
    AdoQry_Headreferenceno: TStringField;
    AdoQry_HeadcustomerPmno: TStringField;
    procedure FormDestroy(Sender: TObject);
    procedure Act_DeleteExecute(Sender: TObject);
  private
    { Private declarations }
  public
  procedure InitForm(AdOConnection:TAdOConnection;ReadOnly:Boolean);Override;
    { Public declarations }
  end;

var
  Frm_Sal_Enter_SaleOrderH: TFrm_Sal_Enter_SaleOrderH;

implementation

uses Sal_Enter_SaleOrder, Sys_Global;

{$R *.DFM}

{ TFrm_Sal_Enter_SaleOrderH }

procedure TFrm_Sal_Enter_SaleOrderH.InitForm(AdOConnection: TAdOConnection;
  ReadOnly: Boolean);
begin
  Application.ProcessMessages;
  inherited;
  If (ReadOnly) Then
  begin
    Act_New.Enabled:=False;
    Act_New.Visible:=False;
    Act_Modify.Enabled:=False;
    Act_Modify.Visible:=False;
    Pnl_Title.Caption:='销售订单查询';
    Frm_Sal_Enter_SaleOrderH.Caption:='销售订单';
  end
  Else
  begin
    Pnl_Title.Caption:='销售订单';
    Frm_Sal_Enter_SaleOrderH.Caption:='销售订单';
  end;
  SelectFromSql:=' Select Sa_SaleOrder.CustomerCode,'
                        +' sa_SaleOrder.referenceno,        '
                        +' sa_SaleOrder.customerPmno,       '
                        +' Customer.CustomerName, '
                        +' Sa_SaleOrder.CustomerCode+'' ''+Customer.CustomerName As CustomerFalg, '
                        +' CreateDate, '
                        +' Sa_SaleOrder.SloNo,Sa_SaleOrder.SaleTypeCode,SaleTypeName,'
                        +' Sa_SaleOrder.SaleDeptCode,Dept.DeptName, '
                        +' Sa_SaleOrder.SaleDeptCode+'' ''+Dept.DeptName As SaleDeptFalg,'
                        +' Sa_SaleOrder.SaleEmployeeCode,Employee1.EmployeeName,  '
                        +' Sa_SaleOrder.SaleEmployeeCode+'' ''+Employee1.EmployeeName As SaleEmployeeFalg,'
                        +' Sa_SaleOrder.CurrencyCode,Currency.CurrencyName,'
                        +' Sa_SaleOrder.CurrencyCode+'' ''+Currency.CurrencyName As CurrencyFalg,  '
                        +' sa_SaleOrder.TaxRate_Percent,Sa_SaleOrder.PayTermCode,PayTerm.PayTermName,   '
                        +' Sa_SaleOrder.PayTermCode+'' ''+PayTerm.PayTermName AS SaleTermFlag, '
                        +' sa_SaleOrder.CreateEmployeeCode,Employee.EmployeeName, '
                        +' sa_SaleOrder.CreateEmployeeCode+'' ''+Employee.EmployeeName as createEmployeefalg, '
                        +' sa_SaleOrder.ShipModeCode,ShipMode.ShipModeName, '
                        +' sa_SaleOrder.ShipModeCode+'' ''+ShipMode.ShipModeName as ShipModefalg, '
                        +' sa_SaleOrder.ShipAddresSCode,customerShipAddress.ShipAddressName, '
                        +' sa_SaleOrder.ShipAddresSCode+'' ''+customerShipAddress.ShipAddressName as ShipAddressfalg ,'
                        +' Sa_SaleOrder.remArk,TotalNoTaxAmount,TotalTaxAmount,EditDate,EdItEmployeeCode ,RemArk1'
                +' From  Sa_SaleOrder '
                        +' Left Join PayTerm  On Sa_SaleOrder.PayTermCode=PayTerm.PayTermCode'
                        +' Join Customer  On Sa_SaleOrder.CustomerCode=Customer.CustomerCode   '
                        +' Left Join Dept On Sa_SaleOrder.SaleDeptCode=Dept.DeptCode   '
                        +' Left Join Employee Employee1 On Sa_SaleOrder.SaleEmployeeCode=Employee1.EmployeeCode  '
                        +' Join Currency On Sa_SaleOrder.CurrencyCode=Currency.CurrencyCode  '
                        +' Left Join Employee On  Sa_SaleOrder.CreateEmployeeCode=Employee.EmployeeCode  '
                        +' Left Join ShipMode On Sa_SaleOrder.ShipModeCode=ShipMode.ShipModeCode    '
                        +' Left Join SaleType On Sa_SaleOrder.SaleTypeCode=SaleType.SaleTypeCode '
                        +' Left Join CustomerShipAddress '
                        //+' On Sa_SaleOrder.ShipAddresSCode=CustomerShipAddress.ShipAddresSCode ';
                        +' On (Sa_SaleOrder.ShipAddresSCode=CustomerShipAddress.ShipAddresSCode  and Sa_SaleOrder.CustomerCode=CustomerShipAddress.CustomerCode ) ';

  Condition:=' exists(select * from Sa_SaleOrderline where Sa_SaleOrder.SloNo=Sa_SaleOrderLine.SloNo and SloLineStatus=5 )';
  if ReadOnly then
  condition:=' 1=1'  ;
  OrderByFields:=' CustomerCode,CreateDate';
  lbl_Condition.Caption:=iifstring(ReadOnly,'全部','销售订单行未全下达');
  GetData;
  Frm_Entry_Body:=TFrm_Sal_Enter_SaleOrder.Create(Application);
end;

procedure TFrm_Sal_Enter_SaleOrderH.FormDestroy(Sender: TObject);
begin
  inherited;
  Frm_Sal_Enter_SaleOrder:=nil;
end;

procedure TFrm_Sal_Enter_SaleOrderH.Act_DeleteExecute(Sender: TObject);
var
  SqlText,BookmArk:String;
  AdoQuery:TAdoQuery;
begin
  inherited;
  if AdoQry_Head.RecordCount=0 then exit;
  If DispInfo('确认真的要删除这张销售订单吗?',2)<>'y' Then exit;
  BookmArk:= AdoQry_Head.BookmArk;
  SqlText:=' Select * From Sa_SaleOrder where '
          +' SloNo in ( Select Distinct SloNo from  Sa_SaleOrderLine where (SloLineStatus<>5))'
          +' And  SloNo='''+AdoQry_Head.fieldbyname('SloNo').AsString+'''';
  AdoQry_Tmp.Close;
  AdoQry_Tmp.SQL.clear;
  AdoQry_Tmp.SQL.Text :=SqlText;
  AdoQry_Tmp.Open;
  while not AdoQry_Tmp.Eof do
  begin
    DispInfo('有销售订单行记录处于非准备状态,不能删除',3);
    Abort;
  end;
  SqlText:=' Select * From Sa_SaleOrder where '
          +' SloNo in ( Select Distinct SloNo from  Sa_SaleOrderLine where  SloLineStatus=5 and (ShipQty<>0 Or ShipQty=null))'
          +' And  SloNo='''+AdoQry_Head.fieldbyname('SloNo').AsString+'''';
  AdoQry_Tmp.Close;
  AdoQry_Tmp.SQL.clear;
  AdoQry_Tmp.SQL.Text :=SqlText;
  AdoQry_Tmp.Open;
  while not AdoQry_Tmp.Eof do
  begin
    DispInfo('有销售订单行记录已发货,不能删除',3);
    Abort;
  end;

  SqlText:=' Select * From Sa_SaleOrder where '
          +' SloNo Not in( Select Distinct SloNo from  Sa_SaleOrderLine where (SloLineStatus<>5) or (SloLineStatus=5 and (ShipQty<>0 Or ShipQty=null)))'
          +' And  SloNo='''+AdoQry_Head.fieldbyname('SloNo').AsString+'''';
  AdoQry_Tmp.Close;
  AdoQry_Tmp.SQL.clear;
  AdoQry_Tmp.SQL.Text :=SqlText;
  AdoQry_Tmp.Open;
  if not AdoQry_Tmp.Eof then
  begin
    AdoQuery:=TAdoQuery.Create(nil);
    AdoQuery.Connection := DbConnect;
    DbConnect.beginTrans;
    try
      Sqltext:='Select * From Sa_SaleOrderLine where  SloNo='''+AdoQry_Head.fieldbyname('SloNo').AsString+'''';
      AdoQuery.Close;
      AdoQuery.SQL.clear;
      AdoQuery.SQL.Text:=SqlText;
      AdoQuery.Open ;
      AdoQuery.First;
      While not AdoQuery.Eof do
      begin
        saveSaleOrderLineHistory(Dbconnect ,AdoQuery.fieldbyname('slono').AssTring,AdoQuery.fieldbyname('slolineno').AsInteger,userCode,2);
        AdoQuery.Next;
      end;

      Sqltext:='Delete Sa_SaleOrderLine where  SloNo='''+AdoQry_Head.fieldbyname('SloNo').AsString+'''';
      ExecuteSql(AdoQry_Tmp,SqlText,1);

      sqltext:='Update Customer With(RowLock) '
              +'   Set SaleOrderSumTotal=IsNull(SaleOrderSumTotal,0)-('+AdoQry_Head.fieldbyname('TotalTaxAmount').asstring+')'
              +' where CustomerCode='+QuotedStr(AdoQry_Head.fieldbyname('CustomerCode').AsString);
      ExecuteSql(AdoQry_Tmp,sqltext,1);
      
      saveSaleOrderHistory(DbConnect,AdoQry_Head.fieldbyname('SloNo').AsString,userCode,2);
      Sqltext:='Delete Sa_SaleOrder where  SloNo='''+AdoQry_Head.fieldbyname('SloNo').AsString+'''';
      ExecuteSql(AdoQry_Tmp,SqlText,1);

      AdoQuery.Free;
      DbConnect.CommitTrans;
    except
      DbConnect.RollBackTrans;
    end;
  end;
  getdata;
  try
    if not AdoQry_Head.Eof  then
      AdoQry_Head.BookmArk:=BookmArk;
  except
  end;
  
end;

end.

⌨️ 快捷键说明

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