276 lines
8.9 KiB
ObjectPascal
276 lines
8.9 KiB
ObjectPascal
unit SaleItemMst;
|
||
|
||
interface
|
||
|
||
uses
|
||
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
|
||
wItem,
|
||
FireDAC.Stan.Intf,
|
||
FireDAC.Stan.Option, FireDAC.Stan.Error, FireDAC.UI.Intf, FireDAC.Phys.Intf,
|
||
FireDAC.Stan.Def, FireDAC.Stan.Pool, FireDAC.Stan.Async, FireDAC.Phys,
|
||
FireDAC.Stan.Param, FireDAC.DatS, FireDAC.DApt.Intf, FireDAC.DApt,
|
||
FireDAC.Phys.PGDef, FireDAC.VCLUI.Wait, FireDAC.Comp.UI, FireDAC.Phys.PG,
|
||
Data.DB, FireDAC.Comp.DataSet, FireDAC.Comp.Client;
|
||
|
||
type
|
||
TSaleItemMst = class(TwItem)
|
||
private
|
||
{ Private declarations }
|
||
FOrdDate: string;
|
||
FOrdCode: string;
|
||
FQty: string;
|
||
FGoodQty: string;
|
||
FDefQty: string;
|
||
FUnitt: string;
|
||
FDescriptions: string;
|
||
FReQty: string;
|
||
FDeliveryQty: string;
|
||
FStatus: string;
|
||
FKind: string;
|
||
FCustName: string;
|
||
FMatKind: string;
|
||
protected
|
||
{ Protected declarations }
|
||
public
|
||
{ Public declarations }
|
||
class function xGetStrSqlSaleItemMstList(AQuery: TFDQuery; kind, cust, prodName, stDate, enDate: string): TList;
|
||
class function xGetStrSqlSaleItemMstList_Stock(AQuery: TFDQuery; kind, cust, prodName, stDate, enDate: string): TList;
|
||
class function xAddSqlMark(velStr: string): string;
|
||
class function LoadFromSingleQuery(AQuery: TFDQuery): TList;
|
||
|
||
class function xGetStrsGroupByColumn(AQuery: TFDQuery; column: string): TStrings;
|
||
class function xAddSqlDoubleMark(velStr: String): String;
|
||
class function LoadFromStringsQuery(AQuery: TFDQuery; column: string): TStrings;
|
||
|
||
class function xGetBalanceQtyByName(AQuery: TFDQuery; column: string): string;
|
||
|
||
class function xGetObjsLikeMe(AQuery: TFDQuery; name: string): TList;
|
||
class function xGetObjsLikeMeMatKind(AQuery: TFDQuery; name: string): TList;
|
||
published
|
||
{ Published declarations }
|
||
property OrdDate: string read FOrdDate write FOrdDate;
|
||
property OrdCode: string read FOrdCode write FOrdCode;
|
||
property Qty: string read FQty write FQty;
|
||
property GoodQty: string read FGoodQty write FGoodQty;
|
||
property DefQty: string read FDefQty write FDefQty;
|
||
property Unitt: string read FUnitt write FUnitt;
|
||
property Descriptions: string read FDescriptions write FDescriptions;
|
||
property ReQty: string read FReQty write FReQty;
|
||
property DeliveryQty: string read FDeliveryQty write FDeliveryQty;
|
||
property Status: string read FStatus write FStatus;
|
||
property Kind: string read FKind write FKind;
|
||
property CustName: string read FCustName write FCustName;
|
||
property MatKind: string read FMatKind write FMatKind;
|
||
end;
|
||
|
||
implementation
|
||
|
||
{ TSaleItemMst }
|
||
|
||
class function TSaleItemMst.LoadFromSingleQuery(AQuery: TFDQuery): TList;
|
||
var
|
||
curSale: TSaleItemMst;
|
||
begin
|
||
Result := TList.Create;
|
||
while not AQuery.Eof do begin
|
||
curSale := TSaleItemMst.Create(nil);
|
||
curSale.OBID := AQuery.FieldByName('OBID').AsString;
|
||
curSale.Name := AQuery.FieldByName('Name').AsString;
|
||
curSale.wClassName := AQuery.FieldByName('wClassName').AsString;
|
||
curSale.CreateDate := AQuery.FieldByName('CreateDate').AsString;
|
||
curSale.CreateTime := FormatDateTime('hh:nn:ss', AQuery.FieldByName('CreateTime').AsDateTime);
|
||
curSale.CreatorID := AQuery.FieldByName('CreatorID').AsString;
|
||
curSale.IsValid := AQuery.FieldByName('IsValid').AsString;
|
||
curSale.LcStatus := AQuery.FieldByName('LcStatus').AsString;
|
||
|
||
curSale.OrdDate := AQuery.FieldByName('OrdDate').AsString;
|
||
curSale.OrdCode := AQuery.FieldByName('OrdCode').AsString;
|
||
curSale.Qty := AQuery.FieldByName('Qty').AsString;
|
||
curSale.GoodQty := AQuery.FieldByName('GoodQty').AsString;
|
||
curSale.DefQty := AQuery.FieldByName('DefQty').AsString;
|
||
curSale.Unitt := AQuery.FieldByName('Unitt').AsString;
|
||
curSale.Descriptions := AQuery.FieldByName('Descriptions').AsString;
|
||
curSale.ReQty := AQuery.FieldByName('ReQty').AsString;
|
||
curSale.DeliveryQty := AQuery.FieldByName('DeliveryQty').AsString;
|
||
curSale.Status := AQuery.FieldByName('Status').AsString;
|
||
curSale.Kind := AQuery.FieldByName('Kind').AsString;
|
||
curSale.CustName := AQuery.FieldByName('CustName').AsString;
|
||
curSale.MatKind := AQuery.FieldByName('MatKind').AsString;
|
||
Result.Add(curSale);
|
||
|
||
AQuery.Next;
|
||
end;
|
||
end;
|
||
|
||
class function TSaleItemMst.LoadFromStringsQuery(AQuery: TFDQuery;
|
||
column: string): TStrings;
|
||
var
|
||
valStr: string;
|
||
begin
|
||
Result := TStringList.Create;
|
||
while not AQuery.Eof do begin
|
||
valStr := AQuery.FieldByName(column).AsString;
|
||
Result.Add(valStr);
|
||
|
||
AQuery.Next;
|
||
end;
|
||
end;
|
||
|
||
class function TSaleItemMst.xAddSqlDoubleMark(velStr: String): String;
|
||
begin
|
||
Result := '';
|
||
Result := '"' + velStr + '"';
|
||
end;
|
||
|
||
class function TSaleItemMst.xAddSqlMark(velStr: string): string;
|
||
begin
|
||
Result := '';
|
||
Result := '''' + velStr + '''';
|
||
end;
|
||
|
||
class function TSaleItemMst.xGetBalanceQtyByName(AQuery: TFDQuery; column: string): string;
|
||
var
|
||
sql: string;
|
||
begin
|
||
Result := '';
|
||
sql := 'SELECT COALESCE(SUM("Qty") FILTER (WHERE "Kind" = ' + xAddSqlMark('<27><EFBFBD>') + '), 0)';
|
||
sql := sql + ' - COALESCE(SUM("Qty") FILTER (WHERE "Kind" = ' + xAddSqlMark('<27><><EFBFBD><EFBFBD>') + '), 0) AS "Qty"';
|
||
sql := sql + ' FROM "SaleItemMst"';
|
||
sql := sql + ' WHERE "Name" = ' + xAddSqlMark(column);
|
||
|
||
try
|
||
AQuery.Close;
|
||
AQuery.SQL.Text := sql;
|
||
AQuery.Open;
|
||
except
|
||
on E: Exception do ShowMessage('xGetBalanceQtyByName <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: ' + E.Message);
|
||
end;
|
||
|
||
while not AQuery.Eof do begin
|
||
Result := AQuery.FieldByName('Qty').AsString;
|
||
|
||
AQuery.Next;
|
||
end;
|
||
end;
|
||
|
||
class function TSaleItemMst.xGetObjsLikeMe(AQuery: TFDQuery;
|
||
name: string): TList;
|
||
var
|
||
sql: string;
|
||
tmpList: TList;
|
||
begin
|
||
Result := nil;
|
||
sql := 'SELECT * FROM "SaleItemMst"';
|
||
sql := sql + ' WHERE "IsValid"=' + xAddSqlMark('t');
|
||
if Length(Trim(name)) > 0 then sql := sql + ' AND "Name"=' + xAddSqlMark(name);
|
||
sql := sql + ' LIMIT 1';
|
||
|
||
try
|
||
AQuery.Close;
|
||
AQuery.SQL.Text := sql;
|
||
AQuery.Open;
|
||
except
|
||
on E: Exception do ShowMessage('xGetObjsLikeMe <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: ' + E.Message);
|
||
end;
|
||
Result := LoadFromSingleQuery(AQuery);
|
||
end;
|
||
|
||
class function TSaleItemMst.xGetObjsLikeMeMatKind(AQuery: TFDQuery;
|
||
name: string): TList;
|
||
var
|
||
sql: string;
|
||
tmpList: TList;
|
||
begin
|
||
Result := nil;
|
||
sql := 'SELECT * FROM "SaleItemMst"';
|
||
sql := sql + ' WHERE "IsValid"=' + xAddSqlMark('t');
|
||
if Length(Trim(name)) > 0 then sql := sql + ' AND "MatKind"=' + xAddSqlMark(name);
|
||
sql := sql + ' ORDER BY "OrdDate"';
|
||
|
||
try
|
||
AQuery.Close;
|
||
AQuery.SQL.Text := sql;
|
||
AQuery.Open;
|
||
except
|
||
on E: Exception do ShowMessage('xGetObjsLikeMeMatKind <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: ' + E.Message);
|
||
end;
|
||
Result := LoadFromSingleQuery(AQuery);
|
||
end;
|
||
|
||
class function TSaleItemMst.xGetStrsGroupByColumn(AQuery: TFDQuery;
|
||
column: string): TStrings;
|
||
var
|
||
sql: string;
|
||
begin
|
||
Result := nil;
|
||
sql := 'SELECT DISTINCT ' + xAddSqlDoubleMark(column) + ' FROM "SaleItemMst"';
|
||
sql := sql + ' WHERE "IsValid"=' + xAddSqlMark('t');
|
||
|
||
try
|
||
AQuery.Close;
|
||
AQuery.SQL.Text := sql;
|
||
AQuery.Open;
|
||
except
|
||
on E: Exception do ShowMessage('xGetStrsGroupByColumn <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: ' + E.Message);
|
||
end;
|
||
|
||
Result := LoadFromStringsQuery(AQuery, column);
|
||
end;
|
||
|
||
class function TSaleItemMst.xGetStrSqlSaleItemMstList(AQuery: TFDQuery; kind,
|
||
cust, prodName, stDate, enDate: string): TList;
|
||
var
|
||
sql: string;
|
||
begin
|
||
Result := nil;
|
||
sql := 'SELECT * FROM "SaleItemMst"';
|
||
sql := sql + ' WHERE "IsValid"=' + xAddSqlMark('t');
|
||
if Length(Trim(kind)) > 0 then sql := sql + ' AND "Kind"=' + xAddSqlMark(kind);
|
||
if Length(Trim(cust)) > 0 then sql := sql + ' AND "CustName"=' + xAddSqlMark(cust);
|
||
if Length(Trim(prodName)) > 0 then sql := sql + ' AND "Name"=' + xAddSqlMark(prodName);
|
||
if Length(Trim(stDate)) > 0 then begin
|
||
sql := sql + ' AND "OrdDate">=' + xAddSqlMark(stDate);
|
||
sql := sql + ' AND "OrdDate"<=' + xAddSqlMark(enDate);
|
||
end;
|
||
sql := sql + ' ORDER BY "OrdDate"';
|
||
|
||
try
|
||
AQuery.Close;
|
||
AQuery.SQL.Text := sql;
|
||
AQuery.Open;
|
||
except
|
||
on E: Exception do ShowMessage('xGetStrSqlSaleItemMstList <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: ' + E.Message);
|
||
end;
|
||
Result := LoadFromSingleQuery(AQuery);
|
||
end;
|
||
|
||
class function TSaleItemMst.xGetStrSqlSaleItemMstList_Stock(AQuery: TFDQuery; kind,
|
||
cust, prodName, stDate, enDate: string): TList;
|
||
var
|
||
sql: string;
|
||
begin
|
||
Result := nil;
|
||
sql := 'SELECT * FROM "SaleItemMst"';
|
||
sql := sql + ' WHERE "IsValid"=' + xAddSqlMark('t');
|
||
if Length(Trim(kind)) > 0 then sql := sql + ' AND "Kind"=' + xAddSqlMark(kind);
|
||
if Length(Trim(cust)) > 0 then sql := sql + ' AND "CustName"=' + xAddSqlMark(cust);
|
||
if Length(Trim(prodName)) > 0 then sql := sql + ' AND "Name"=' + xAddSqlMark(prodName);
|
||
if Length(Trim(stDate)) > 0 then begin
|
||
sql := sql + ' AND "OrdDate">=' + xAddSqlMark(stDate);
|
||
sql := sql + ' AND "OrdDate"<=' + xAddSqlMark(enDate);
|
||
end;
|
||
sql := sql + ' ORDER BY "OrdDate"';
|
||
|
||
try
|
||
AQuery.Close;
|
||
AQuery.SQL.Text := sql;
|
||
AQuery.Open;
|
||
except
|
||
on E: Exception do ShowMessage('xGetStrSqlSaleItemMstList <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: ' + E.Message);
|
||
end;
|
||
Result := LoadFromSingleQuery(AQuery);
|
||
end;
|
||
|
||
end.
|
||
|