📄 sal_enter_saleorderh.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 + -