SmartFactory_NEOL/SOURCE/Agent,Kiosk/Lib/base - 20251205_old/SaleItemMst.pas
2026-09-04 14:08:41 +09:00

276 lines
8.9 KiB
ObjectPascal
Raw Blame History

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.