?? sledordergtp.pas
字號:
unit SLEdOrderGTP;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, BaseVoucherEdit, Menus, ActnList, DB, ComCtrls, StdCtrls, Mask,
DBCtrls, ExtCtrls, ToolWin, Grids, DBGrids, QLDBGrid, ADODB, GEdit,
QLDBLkp;
type
TSLEdOrderGTPForm = class(TBaseVoucherEditForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
ClientName: TADODataSet;
EmployeeName: TADODataSet;
GoodName: TADODataSet;
Label5: TLabel;
PackUnit: TADODataSet;
dsPackUnit: TDataSource;
DSClientName: TDataSource;
DSEmployeeName: TDataSource;
ClientQLDBLookup: TQLDBLookupComboBox;
LookupEmployee: TQLDBLookupComboBox;
Label6: TLabel;
Label7: TLabel;
LookupPackUint: TQLDBLookupComboBox;
TempAds: TADODataSet;
adsMaster: TADODataSet;
adsDetail: TADODataSet;
adsDetailID: TAutoIncField;
adsDetailMasterID: TIntegerField;
adsDetailGoodsID: TIntegerField;
adsDetailQuantity: TBCDField;
adsDetailQuantityPcs: TBCDField;
adsDetailPackUnitID: TIntegerField;
adsDetailPriceBase: TBCDField;
adsDetailAmount: TBCDField;
adsDetailDiscount: TBCDField;
adsDetailGoalQuantity: TBCDField;
adsDetailSundryFee: TBCDField;
adsDetailGoalUnitID: TIntegerField;
adsMasterID: TAutoIncField;
adsMasterCreateDate: TDateTimeField;
adsMasterCreateUserID: TIntegerField;
adsMasterRecordState: TStringField;
adsMasterDate: TDateTimeField;
adsMasterCode: TStringField;
adsMasterClientID: TIntegerField;
adsMasterBillMode: TStringField;
adsMasterPeriodID: TIntegerField;
adsMasterClearDate: TDateTimeField;
adsMasterMemo: TStringField;
adsMasterSundryFee: TBCDField;
Label8: TLabel;
adsMasterClientName: TStringField;
adsDetailPackUnit: TStringField;
TempOrderTrail: TAction;
adsMasterEmployeeID: TIntegerField;
adsMasterApportion: TStringField;
adsMasterDeliver: TStringField;
adsMasterOriginID: TIntegerField;
adsMasterOriginTable: TStringField;
adsMasterBillAffix: TBytesField;
adsDetailMemo: TStringField;
adsMasterBrief: TStringField;
BriefComboBox: TDBComboBox;
Label9: TLabel;
DBEdit1: TDBEdit;
DBEdit2: TDBEdit;
Label10: TLabel;
DBEdit3: TDBEdit;
DBEdit4: TDBEdit;
Label4: TLabel;
DBEdit5: TDBEdit;
GEdit1: TGEdit;
adsDetailTaxAmount: TBCDField;
adsDetailGoodsSpec: TStringField;
adsGoodsSpec: TADODataSet;
dsGoodsSpec: TDataSource;
adsMasterEmployee: TStringField;
GoalUnit: TADODataSet;
dsGoalUnit: TDataSource;
adsDetailGoalUnit: TStringField;
adsMasterModeDC: TIntegerField;
adsMasterModeC: TIntegerField;
adsMasterWarehouseID: TIntegerField;
adsDetailGoodsName: TStringField;
TpPackUnit: TADOQuery;
adsDetailPriceGoal: TBCDField;
PackUintFltAQ: TADODataSet;
PackUintFltDS: TDataSource;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormCreate(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure ClientQLDBLookupExit(Sender: TObject);
procedure ClientQLDBLookupEnter(Sender: TObject);
procedure adsDetailGoodsIDChange(Sender: TField);
procedure adsDetailGoalQuantityChange(Sender: TField);
procedure LookupPackUintEnter(Sender: TObject);
procedure LookupPackUintExit(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure Open(VoucherID: Integer); override;
procedure New; override;
end;
var
SLEdOrderGTPForm: TSLEdOrderGTPForm;
implementation
uses CommonDM, WSUtils, WSSecurity ;
{$R *.dfm}
procedure TSLEdOrderGTPForm.New;
begin
inherited;
adsMaster.FieldByName('Date').AsDateTime :=date;
adsMaster.FieldByName('Code').AsString:=GetMaxCode('Code','SLOrderMaster',number);
adsMaster.FieldByName('CreateUserID').AsInteger :=Guarder.UserID;
adsMaster.FieldByName('BillMode').AsString :='銷售訂單';
adsMaster.FieldByName('ModeDC').AsInteger :=1;
adsMaster.FieldByName('ModeC').AsInteger :=1;
adsMaster.FieldByName('Deliver').AsString:='--';
adsMaster.FieldByName('Apportion').AsString:='--';
adsMaster.FieldByName('OriginTable').AsString:='SLOrderMaster';
end;
procedure TSLEdOrderGTPForm.Open(VoucherID: Integer);
begin
inherited Open(VoucherID);
end;
procedure TSLEdOrderGTPForm.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
inherited;
adsMaster.Close;
adsDetail.Close;
ClientName.Close;
EmployeeName.Close;
GoodName.Close;
PackUnit.Close;
adsGoodsSpec.Close;
end;
procedure TSLEdOrderGTPForm.FormCreate(Sender: TObject);
var GoodsSpecStr:string;
begin
inherited;
VoucherTableName := 'SLOrder';
ClientName.Open;
EmployeeName.Open;
GoodName.Open;
PackUnit.Open;
TempAds.close;
TempAds.CommandText :='select distinct levelcode from DAAttribute'
+' where name like'+Quotedstr('%商品%')+' and upid=-1';
TempAds.open;
TempAds.First;
GoodsSpecStr :=' where (1<>1 ';
while not TempAds.Eof do
begin
GoodsSpecStr :=GoodsSpecStr+' or Levelcode like '+Quotedstr('%'+
Trim(TempAds.fieldbyname('Levelcode').AsString)+'%') ;
TempAds.Next;
end;
GoodsSpecStr :=' select * from DAAttribute '+ GoodsSpecStr
+' ) and (upid<>-1 and Recordstate<>'+Quotedstr('刪除')+')';
adsGoodsSpec.Close;
adsGoodsSpec.CommandText :=GoodsSpecStr;
adsGoodsSpec.Open;
TempAds.Close;
TempAds.CommandText :=' select Distinct brief from SLOrderMaster';
TempAds.Open;
TempAds.First;
while not TempAds.Eof do
begin
BriefComboBox.Items.Add(TempAds.FieldByName('brief').AsString);
TempAds.Next;
end;
if TempAds.IsEmpty then BriefComboBox.Items.Add('銷售訂單');
end;
procedure TSLEdOrderGTPForm.FormShow(Sender: TObject);
var adoTemp: TADOQuery;
begin
inherited;
adoTemp := TADOQuery.Create(nil);
adoTemp.Connection := CommonData.acnConnection;
adoTemp.Close;
adoTemp.SQL.Text :=' IF EXISTS( SELECT * FROM tempdb..sysobjects '
+' WHERE ID = OBJECT_ID('+Quotedstr('tempdb..#TempPackUnit11')
+' )) DROP TABLE #TempPackUnit11 ' ;
adoTemp.ExecSQL;
adoTemp.Close;
adoTemp.SQL.Text :=' create table #TempPackUnit11 ('
+' PID [int] IDENTITY (1, 1) NOT NULL ,'
+' ID [int] NULL ,'
+' [CreateDate] [datetime] NULL , '
+' [CreateUserID] [int] NULL , '
+' [RecordState] [varchar] (12) NULL , '
+' [Name] [varchar] (20) NULL ,'
+' [ExchangeRate] [decimal](9, 4) NULL ,'
+' [GoalUnitID] [int] NULL , '
+' [IsGoalUnit] [bit] NOT NULL ) ';
adoTemp.ExecSQL;
ClientQLDBLookup.SetFocus;
end;
procedure TSLEdOrderGTPForm.ClientQLDBLookupExit(Sender: TObject);
var adoTemp: TADOQuery;
begin
inherited;
if (adsMaster.fieldbyname('ClientID').IsNull) or
(adsMaster.fieldbyname('ClientID').AsInteger=0) then exit;
adoTemp := TADOQuery.Create(nil);
adoTemp.Connection := CommonData.acnConnection;
with adoTemp do
begin
close;
sql.Text := 'select sum(isnull(AmountC,0))-sum(isnull(AmountD,0)) '
+' as Balance from ( '
+' ( select 0 as AmountD,b.Amount*Isnull(a.ModeDC,1)*Isnull(a.ModeC,1) as AmountC '
+' from SLSaleMaster a left outer join '
+' (select MasterID,sum(isnull(amount,0))- '
+' -sum(isnull(Discount,0))+sum(isnull(TaxAmount,0)) '
+' +sum(isnull(SundryFee,0)) as amount '
+' from SLSaleDetail group by MasterId) as b on a.ID=b.MasterID '
+' where a.ClientID='+adsMaster.fieldbyname('ClientID').AsString
+' and RecordState<>'+QuotedStr('刪除') +' )'
+' UNION ALL '
+' ( select Sum(Isnull(AmountD*Isnull(ModeDC,1)*Isnull(ModeC,1),0)) as AmountD, '
+' Sum(Isnull(AmountRed*Isnull(ModeDC,1)*Isnull(ModeC,1)*(-1),0)) as Amountc '
+' from FNClearSLMaster where ClientID='
+ adsMaster.fieldbyname('ClientID').AsString
+' and RecordState<>'+QuotedStr('刪除') +' ) '
+' ) as SLBalance';
open;
GEdit1.Enabled :=true;
if adoTemp.IsEmpty then GEdit1.Text :='0'
else GEdit1.Text :=fieldbyname('Balance').asstring;
GEdit1.Enabled :=False;
end;
end;
procedure TSLEdOrderGTPForm.ClientQLDBLookupEnter(Sender: TObject);
begin
inherited;
GEdit1.Enabled :=true;
GEdit1.Text :='0';
GEdit1.Enabled :=false;
end;
procedure TSLEdOrderGTPForm.adsDetailGoodsIDChange(Sender: TField);
var SGoodsID,SClientID:integer;
begin
inherited;
if (adsDetail.fieldbyname('GoodsID').IsNull) then exit;
if (adsDetail.fieldbyname('GoodsID').IsNull) then SGoodsID :=0
else SGoodsID :=adsDetail.fieldbyname('GoodsID').AsInteger;
if (adsMaster.fieldbyname('ClientID').IsNull) then SClientID :=0
else SClientID :=adsMaster.fieldbyname('ClientID').AsInteger;
TempAds.Close; //取當前客戶的合同售價和標準單位
TempAds.CommandText :='select * from '
+' ( select GoodsID as ID ,c.name ,c.code,c.Spec , GoalUnitID as UnitID, '
+' 0 as AddUnitID ,0.00 as PricePurchase ,PriceGoal as PriceSales '
+' from SLContractpriceDetail a '
+' left outer join SLContractpriceMaster b on B.ID=a.masterID '
+' left outer join DAGoods c on c.ID=a.GoodsID '
+' where b.Recordstate<>'+QuotedStr('刪除')+' and b.ClientID='
+ Inttostr(SClientID)
+' union all '
+' SELECT ID, Name, Code,Spec, UnitID, AddUnitID, PricePurchase,PriceSales '
+' FROM DAGoods '
+' where ID not in '
+' (select GoodsID from SLContractpriceDetail a '
+' left outer join SLContractpriceMaster b on B.ID=a.masterID '
+' where Recordstate<>'+QuotedStr('刪除') +' and b.ClientID='
+ Inttostr(SClientID)+' and a.PriceClear<>0 and a.PriceClear is not null ) ) as ab '
+' where ab.ID is not null and Ab.ID<>0 '
+' and ab.ID='+Inttostr(SGoodsID) ;
TempAds.Open;
adsDetail.FieldByName('PriceGoal').AsFloat :=
TempAds.FieldByName('PriceSales').AsFloat ;
if (TempAds.FieldByName('UnitID').IsNull) or (TempAds.FieldByName('UnitID').AsInteger=0) then
begin
adsDetail.FieldByName('GoalUnitID').AsInteger :=1;
adsDetail.FieldByName('PackUnitID').AsInteger :=1;
end else
begin
adsDetail.FieldByName('GoalUnitID').AsInteger :=TempAds.FieldByName('UnitID').AsInteger;
adsDetail.FieldByName('PackUnitID').AsInteger :=TempAds.FieldByName('UnitID').AsInteger;
end;
end;
procedure TSLEdOrderGTPForm.adsDetailGoalQuantityChange(Sender: TField);
var ExChRate :real;
begin
PackUnit.Locate('ID', adsDetail.fieldbyname('PackUnitID').AsString, []);
adsDetail.FieldByName('Amount').AsFloat :=
adsDetail.fieldbyname('GoalQuantity').asfloat*adsDetail.fieldbyname('PriceGoal').AsFloat;
if PackUnit.fieldbyname('ExchangeRate').IsNull then ExChRate :=1
else ExChRate :=PackUnit.fieldbyname('ExchangeRate').AsFloat;
adsDetail.FieldByName('Quantity').AsFloat :=
adsDetail.fieldbyname('GoalQuantity').AsFloat/ExChRate;
if adsDetail.FieldByName('Quantity').AsFloat<>0 then
adsDetail.FieldByName('PriceBase').AsFloat :=
adsDetail.fieldbyname('Amount').AsFloat/adsDetail.FieldByName('Quantity').AsFloat;
end;
procedure TSLEdOrderGTPForm.LookupPackUintEnter(Sender: TObject);
var GoodsIDstr :string;
begin
if adsDetail.FieldByName('GoodsID').IsNull then Exit;
GoodsIDstr :=adsDetail.fieldbyname('GoodsID').asstring;
if Trim(GoodsIDstr)='' then exit;
LookupPackUint.ListSource := PackUintFltDS;
PackUintFltAQ.Close;
PackUintFltAQ.CommandText :=' select ID, Name, ExchangeRate, GoalUnitID,'
+' IsGoalUnit from MSUnit where RecordState<>'+Quotedstr('刪除')
+' and GoalUnitID in (select UnitID from DaGoods where ID='
+GoodsIDstr +' ) order by GoalUnitID,ExchangeRate' ;
PackUintFltAQ.Open;
end;
procedure TSLEdOrderGTPForm.LookupPackUintExit(Sender: TObject);
begin
LookupPackUint.ListSource :=dsPackUnit;
end;
end.
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -