You've already forked lazarus-ccr
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@639 8e941d3f-bd1b-0410-a28a-d453659cc2b4
589 lines
18 KiB
ObjectPascal
589 lines
18 KiB
ObjectPascal
unit uOrderGoods;
|
|
|
|
{$mode objfpc}{$H+}
|
|
|
|
interface
|
|
|
|
uses
|
|
Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, ExtCtrls,
|
|
Buttons, rxdbgrid, sqlite3ds, db, ComCtrls, StdCtrls, uDbTypes, memds2, ufrmParent,
|
|
contnrs;
|
|
|
|
type
|
|
TGoodShowType = (gstBusket=1, gstOrder=2);
|
|
|
|
{ TfrmOrderGoods }
|
|
|
|
TfrmOrderGoods = class(TfrmParent)
|
|
BitBtn1: TBitBtn;
|
|
BitBtn2: TBitBtn;
|
|
dsrcOrderGoods: TDatasource;
|
|
dsBusket: TMemDataset;
|
|
ledtOrderSum: TLabeledEdit;
|
|
memGoodHint: TMemo;
|
|
PageControl1: TPageControl;
|
|
Panel1: TPanel;
|
|
grdBusket: TRxDBGrid;
|
|
Panel2: TPanel;
|
|
pnlKeyboard: TPanel;
|
|
TabSheet1: TTabSheet;
|
|
tbOrderSum: TTabSheet;
|
|
procedure BitBtn1Click(Sender: TObject);
|
|
procedure BitBtn2Click(Sender: TObject);
|
|
procedure dsBusketAfterEdit(DataSet: TDataSet);
|
|
procedure dsBusketAfterScroll(DataSet: TDataSet);
|
|
procedure dsBusketBeforeEdit(DataSet: TDataSet);
|
|
procedure dsBusketBeforePost(DataSet: TDataSet);
|
|
procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
|
|
procedure FormResize(Sender: TObject);
|
|
procedure FormShow(Sender: TObject);
|
|
procedure tbOrderSumShow(Sender: TObject);
|
|
private
|
|
CopyingRecords:boolean;
|
|
FGoodShowType: TGoodShowType;
|
|
FId_Order: TDbKeyType;
|
|
DealerDefault:string;
|
|
FId_Org: TDbKeyType;
|
|
KeyboardControls:TComponentList;
|
|
{ private declarations }
|
|
procedure DealerPickListFill;
|
|
procedure SaveOrder;
|
|
procedure Reload;
|
|
procedure BusketFieldsDefine;
|
|
procedure KeyboardCreate;
|
|
procedure OnKeyboardClick(Sender:TObject);
|
|
public
|
|
constructor Create(AOwner:TComponent);override;
|
|
destructor Destroy;override;
|
|
|
|
{ public declarations }
|
|
property Id_Order:TDbKeyType read FId_Order write FId_Order;
|
|
property Id_Org:TDbKeyType read FId_Org write FId_Org;
|
|
property GoodShowType:TGoodShowType read FGoodShowType write FGoodShowType;
|
|
end;
|
|
|
|
var
|
|
frmOrderGoods: TfrmOrderGoods;
|
|
|
|
implementation
|
|
uses uConfig, uDebug, uUtils, uBase, variants, uOptionConst, LCLType;
|
|
|
|
{ TfrmOrderGoods }
|
|
|
|
procedure TfrmOrderGoods.BitBtn2Click(Sender: TObject);
|
|
begin
|
|
GlobalLogger.Log('Закрытие формы TfrmOrderGoods');
|
|
Close;
|
|
end;
|
|
|
|
procedure TfrmOrderGoods.dsBusketAfterEdit(DataSet: TDataSet);
|
|
begin
|
|
dsBusketAfterScroll(DataSet);
|
|
end;
|
|
|
|
procedure TfrmOrderGoods.dsBusketAfterScroll(DataSet: TDataSet);
|
|
begin
|
|
if CopyingRecords then Exit;
|
|
memGoodHint.Lines.Text:=Dataset.FieldByName('Good_Name').AsString;
|
|
memGoodHint.Invalidate;
|
|
end;
|
|
|
|
procedure TfrmOrderGoods.dsBusketBeforeEdit(DataSet: TDataSet);
|
|
var D:String;
|
|
begin
|
|
if Dataset.FieldByName('Dealer').IsNull then
|
|
begin
|
|
D:=DealerDefault;
|
|
{
|
|
//последний дилер
|
|
if D = '' then
|
|
D:=BaseConnect.OptionUser[goOptDealerCurrent];}
|
|
if D = '' then
|
|
D:='0'; //розница
|
|
Dataset.FieldByName('Dealer').AsString:=D;
|
|
end;
|
|
|
|
dsBusketAfterScroll(DataSet);
|
|
end;
|
|
|
|
procedure TfrmOrderGoods.dsBusketBeforePost(DataSet: TDataSet);
|
|
var S:String;
|
|
P:Variant;
|
|
PS:Variant;
|
|
begin
|
|
if CopyingRecords then Exit;
|
|
|
|
S:='';
|
|
if dsBusket.FieldByName('Selected').AsInteger = 1 then
|
|
begin
|
|
if dsBusket.FieldByName('Quantity').IsNull or
|
|
(dsBusket.FieldByName('Quantity').AsFloat <= 0.000001) then
|
|
begin
|
|
S:='Поле Количество не заполнено';
|
|
end;
|
|
|
|
if dsBusket.FieldByName('Dealer').IsNull then
|
|
S:='Поле Дилер должно быть заполнено'
|
|
else
|
|
begin
|
|
P:=BaseConnect.DLookup(Format('select Price from Price where Good=%d and Dealer=%d',
|
|
[dsBusket.FieldByName('ID_Good').AsInteger,
|
|
dsBusket.FieldByName('Dealer').AsInteger]), 'Price');
|
|
dsBusket.FieldByName('Price').AsVariant:=P;
|
|
if VarIsNull(P) then
|
|
begin
|
|
S:='Для Дилера не задана цена.' + #13#10 +
|
|
Format('Товар=%d, дилер=%d',
|
|
[dsBusket.FieldByName('ID_Good').AsInteger,
|
|
dsBusket.FieldByName('Dealer').AsInteger]);
|
|
PS:=null;
|
|
end
|
|
else
|
|
PS:=P*dsBusket.FieldByName('Quantity').AsFloat;
|
|
dsBusket.FieldByName('PriceSum').AsVariant:=PS;
|
|
|
|
//запоминание номера дилера
|
|
BaseConnect.OptionUser[goOptDealerCurrent]:=dsBusket.FieldByName('Dealer').AsString;
|
|
end;
|
|
end;
|
|
|
|
dsBusket.FieldByName('RemainsCurrent').AsFloat:=
|
|
dsBusket.FieldByName('Remains').AsFloat - dsBusket.FieldByName('Quantity').AsFloat;
|
|
|
|
if S <> '' then
|
|
begin
|
|
ShowMessage(S);
|
|
|
|
//снимаем выделение
|
|
dsBusket.FieldByName('Selected').AsInteger:=0;
|
|
end;
|
|
end;
|
|
|
|
procedure TfrmOrderGoods.FormClose(Sender: TObject;
|
|
var CloseAction: TCloseAction);
|
|
begin
|
|
CloseAction:=caHide;
|
|
end;
|
|
|
|
procedure TfrmOrderGoods.FormResize(Sender: TObject);
|
|
begin
|
|
KeyboardCreate;
|
|
end;
|
|
|
|
procedure TfrmOrderGoods.FormShow(Sender: TObject);
|
|
begin
|
|
GlobalLogger.Log('Открытие формы TfrmOrderGoods');
|
|
Reload;
|
|
end;
|
|
|
|
procedure TfrmOrderGoods.tbOrderSumShow(Sender: TObject);
|
|
var OrderSum:Double;
|
|
begin
|
|
if not dsBusket.Active then Exit;
|
|
|
|
{
|
|
//по неизвестной причине в ARM считает не правильно
|
|
SaveOrder;
|
|
ledtOrderSum.Text:=VarToStr(BaseConnect.DLookup(
|
|
'SELECT SUM(Price*Quantity) as S FROM Order_List Where ID_Order=%d', [ID_Order], 'S'));
|
|
//'SELECT SUM((Price + 0.0)*(Quantity + 0.0) + 0.0) as S FROM Order_List Where ID_Order=%d', [ID_Order], 'S'));
|
|
}
|
|
GlobalLogger.Log('Подсчет суммы заказа');
|
|
CopyingRecords:=true;
|
|
try
|
|
dsBusket.DisableControls;
|
|
dsBusket.First;
|
|
OrderSum:=0;
|
|
while not dsBusket.EOF do
|
|
begin
|
|
if dsBusket.FieldByName('Selected').AsInteger <> 0 then
|
|
begin
|
|
OrderSum:=OrderSum + dsBusket.FieldByName('Price').AsFloat * dsBusket.FieldByName('Quantity').AsFloat;
|
|
end;
|
|
|
|
dsBusket.Next;
|
|
end;
|
|
|
|
dsBusket.First;
|
|
ledtOrderSum.Text:=FormatFloat('#,###.##', OrderSum);
|
|
GlobalLogger.Log('Подсчет суммы заказа успешно завершено');
|
|
finally
|
|
CopyingRecords:=false;
|
|
dsBusket.EnableControls;
|
|
end;
|
|
end;
|
|
|
|
procedure TfrmOrderGoods.BitBtn1Click(Sender: TObject);
|
|
begin
|
|
SaveOrder;
|
|
Close;
|
|
end;
|
|
|
|
{
|
|
procedure TfrmOrderGoods.SaveOrder;
|
|
var PostDS:TSqlite3Dataset;
|
|
begin
|
|
GlobalLogger.Log('Сохранение заказа с id=%d. Старт', [ID_Order]);
|
|
|
|
GlobalLogger.Log('Очистка существующего содержимого заказа');
|
|
//сначала удалим все из существующего заказа
|
|
BaseConnect.SQLExec('DELETE FROM Order_List WHERE ID_Order=' + IntToStr(ID_Order));
|
|
|
|
GlobalLogger.Log('Добавление товаров в заказ');
|
|
PostDS:=nil;
|
|
CopyingRecords:=true;
|
|
try
|
|
PostDS:=BaseConnect.DatasetCreate('Order_List', 'ID');
|
|
|
|
//dsrcOrderGoods.Enabled:=False;
|
|
dsBusket.DisableControls;
|
|
dsBusket.First;
|
|
while not dsBusket.EOF do
|
|
begin
|
|
if dsBusket.FieldByName('Selected').AsInteger <> 0 then
|
|
begin
|
|
PostDS.Append;
|
|
PostDS.FieldByName('ID_Order').AsInteger:=Id_Order;
|
|
PostDS.FieldByName('Good').AsInteger :=dsBusket.FieldByName('ID_Good').AsInteger;
|
|
PostDS.FieldByName('Price').AsFloat :=dsBusket.FieldByName('Price').AsFloat;
|
|
PostDS.FieldByName('Quantity').AsFloat:=dsBusket.FieldByName('Quantity').AsFloat;
|
|
PostDS.FieldByName('Dealer').AsInteger:=dsBusket.FieldByName('Dealer').AsInteger;
|
|
PostDS.Post;
|
|
end;
|
|
|
|
dsBusket.Next;
|
|
end;
|
|
|
|
GlobalLogger.Log('Применение заказа');
|
|
PostDS.ApplyUpdates;
|
|
finally
|
|
//dsrcOrderGoods.Enabled:=true;
|
|
CopyingRecords:=false;
|
|
dsBusket.EnableControls;
|
|
PostDS.Free;
|
|
|
|
GlobalLogger.Log('Сохранение заказа с id=%d. Финиш', [ID_Order]);
|
|
end;
|
|
end;
|
|
}
|
|
procedure TfrmOrderGoods.SaveOrder;
|
|
var Fmt: TFormatSettings;
|
|
S:String;
|
|
begin
|
|
GlobalLogger.Log('Сохранение заказа с id=%d. Старт', [ID_Order]);
|
|
|
|
GlobalLogger.Log('Очистка существующего содержимого заказа');
|
|
//сначала удалим все из существующего заказа
|
|
BaseConnect.SQLExec('DELETE FROM Order_List WHERE ID_Order=' + IntToStr(ID_Order));
|
|
|
|
GlobalLogger.Log('Добавление товаров в заказ');
|
|
CopyingRecords:=true;
|
|
|
|
Fmt:=DefaultFormatSettings;
|
|
Fmt.DecimalSeparator:='.';
|
|
try
|
|
dsBusket.DisableControls;
|
|
dsBusket.First;
|
|
while not dsBusket.EOF do
|
|
begin
|
|
if dsBusket.FieldByName('Selected').AsInteger <> 0 then
|
|
begin
|
|
S:=Format('INSERT INTO Order_List(ID, ID_Order, Good, Price, Quantity, Dealer) ' +
|
|
'VALUES(NULL, %d, %d, %s, %s, %d)',
|
|
[Id_Order, dsBusket.FieldByName('ID_Good').AsInteger,
|
|
FloatToStr(dsBusket.FieldByName('Price').AsFloat, Fmt),
|
|
FloatToStr(dsBusket.FieldByName('Quantity').AsFloat, Fmt),
|
|
dsBusket.FieldByName('Dealer').AsInteger
|
|
]);
|
|
BaseConnect.SQLExec(S);
|
|
end;
|
|
|
|
dsBusket.Next;
|
|
end;
|
|
|
|
GlobalLogger.Log('Применение заказа');
|
|
finally
|
|
//dsrcOrderGoods.Enabled:=true;
|
|
CopyingRecords:=false;
|
|
dsBusket.EnableControls;
|
|
|
|
GlobalLogger.Log('Сохранение заказа с id=%d. Финиш', [ID_Order]);
|
|
end;
|
|
end;
|
|
|
|
procedure TfrmOrderGoods.Reload;
|
|
var dsOrder_Busket:TSqlite3Dataset;
|
|
S:string;
|
|
SubGroupId, GroupId:String;
|
|
Filter, ShowTypeFilter:string;
|
|
Q, P:Variant;
|
|
begin
|
|
GlobalLogger.Log('Заполнение корзины товаров');
|
|
DealerPickListFill;
|
|
|
|
SubGroupId:=BaseConnect.OptionUser[goOptSubGroupCurrent];
|
|
if SubGroupId = '' then
|
|
begin
|
|
ShowMessage('Не выбрана текущая подгруппа товаров');
|
|
dsBusket.Close;
|
|
end;
|
|
|
|
GroupId:=BaseConnect.OptionUser[goOptGroupCurrent];
|
|
if GroupId = '' then
|
|
begin
|
|
ShowMessage('Не выбрана текущая группа товаров');
|
|
dsBusket.Close;
|
|
end;
|
|
|
|
{
|
|
if SubGroupId = '0' then
|
|
Filter:='left join Good_Groups h on (o.ID_Good = h.Good and h.ID_Group=' + GroupId + ') '
|
|
else
|
|
Filter:='left join HierGoods h on (o.ID_Good = h.Good and h.ParentId=' + SubGroupId + ') ';
|
|
}
|
|
if SubGroupId = '0' then
|
|
Filter:='left join Good_Groups h on (g.ID = h.Good and h.ID_Group=' + GroupId + ') '
|
|
else
|
|
Filter:='left join HierGoods h on (g.ID = h.Good and h.ParentId=' + SubGroupId + ') ';
|
|
|
|
DealerDefault:=VarToStr(BaseConnect.DLookup('SELECT DealerDefault FROM Orgs WHERE Id = %d', [Id_Org], 'DealerDefault'));
|
|
|
|
ShowTypeFilter:='';
|
|
{
|
|
case GoodShowType of
|
|
gstBusket:
|
|
ShowTypeFilter:=Iif(Id_Order <> -1, Format(' WHERE (ID_Order=-1 or ID_Order=%d) and ((o.Selected=1) or not (h.Good is null)) ', [Id_Order]), '');
|
|
gstOrder:
|
|
ShowTypeFilter:=Format(' WHERE (ID_Order=%d) and (o.Selected=1) ', [Id_Order]);
|
|
else
|
|
begin
|
|
ShowMessage('Неизвестный тип показа заказа');
|
|
end;
|
|
end;
|
|
}
|
|
case GoodShowType of
|
|
gstBusket:
|
|
//ShowTypeFilter:=Iif(Id_Order <> -1, Format(' WHERE (ol.ID_Order is null or ol.ID_Order=%d) and ((ol.ID is not null) or (h.Good is not null)) ', [Id_Order]), '');
|
|
//ShowTypeFilter:=Iif(Id_Order <> -1, Format(' WHERE (ol.ID_Order is null and (h.Good is not null)) or (ol.ID_Order=%d and (ol.ID is not null)) ', [Id_Order]), '');
|
|
ShowTypeFilter:=Iif(Id_Order <> -1, Format(' WHERE (ol.ID_Order is null and (h.Good is not null)) or (ol.ID is not null) ', [Id_Order]), '');
|
|
gstOrder:
|
|
ShowTypeFilter:=Format(' WHERE (ol.ID_Order=%d) and (ol.ID is not null) ', [Id_Order]);
|
|
else
|
|
begin
|
|
ShowMessage('Неизвестный тип показа заказа');
|
|
end;
|
|
end;
|
|
|
|
dsOrder_Busket:=nil;
|
|
try
|
|
{S:=
|
|
'SELECT ID_Order, Selected, ID_Order_List, o.ID_Good as ID_Good, ' +
|
|
'Good_Name, Price, Quantity, Remains, ' +
|
|
'Dealer '+
|
|
'FROM Order_Busket o ' +
|
|
Filter +
|
|
ShowTypeFilter +
|
|
' ORDER BY Good_Name';
|
|
}
|
|
S:=Format(
|
|
'SELECT coalesce(ol.ID_Order, -1) as ID_Order, ' +
|
|
'coalesce(ol.ID+1, 0)/coalesce(ol.ID+1, 1) as Selected, ' +
|
|
'coalesce(ol.ID, -1) as ID_Order_List, '+
|
|
'g.ID as ID_Good, ' +
|
|
'g.Name as Good_Name, ' +
|
|
'ol.Price as Price, ' +
|
|
'ol.Quantity as Quantity, ' +
|
|
'coalesce(g.Remains, 0) as Remains, ' +
|
|
'ol.Dealer as Dealer '+
|
|
'FROM Goods g left join Order_List ol on (g.ID=ol.Good and ol.ID_Order=%d) ' +
|
|
Filter +
|
|
ShowTypeFilter +
|
|
' ORDER BY Good_Name', [Id_Order]);
|
|
|
|
GlobalLogger.Log('Открытие датасета dsOrder_Busket (%s)', [S]);
|
|
dsOrder_Busket:=BaseConnect.DatasetCreate(S);
|
|
|
|
dsBusket.DisableControls;
|
|
try
|
|
GlobalLogger.Log('Заполнение временного датасета. Старт');
|
|
CopyingRecords:=true;
|
|
//dsBusket.CopyFromDataset(dsOrder_Busket, true);
|
|
|
|
dsBusket.Clear(False);
|
|
dsBusket.Open;
|
|
|
|
GlobalLogger.LogDatasetFieldNames('dsOrder_Busket', dsOrder_Busket);
|
|
|
|
while not dsOrder_Busket.EOF do
|
|
begin
|
|
dsBusket.Append;
|
|
DbFieldAssignAsDbKey(dsBusket, 'ID_Order', dsOrder_Busket.FieldByName('ID_Order'));
|
|
dsBusket.FieldByName('Selected').AsVariant:=dsOrder_Busket.FieldByName('Selected').AsVariant;
|
|
dsBusket.FieldByName('ID_Order_List').AsVariant:=dsOrder_Busket.FieldByName('ID_Order_List').AsVariant;
|
|
dsBusket.FieldByName('ID_Good').AsVariant:=dsOrder_Busket.FieldByName('ID_Good').AsVariant;
|
|
dsBusket.FieldByName('Good_Name').AsVariant:=dsOrder_Busket.FieldByName('Good_Name').AsVariant;
|
|
dsBusket.FieldByName('Dealer').AsVariant:=dsOrder_Busket.FieldByName('Dealer').AsVariant;
|
|
|
|
P:=dsOrder_Busket.FieldByName('Price').AsVariant;
|
|
dsBusket.FieldByName('Price').AsVariant:=P;
|
|
if VarIsNull(P) then P:=0;
|
|
|
|
Q:=dsOrder_Busket.FieldByName('Quantity').AsVariant;
|
|
dsBusket.FieldByName('Quantity').AsVariant:=Q;
|
|
|
|
if VarIsNull(Q) then Q:=0;
|
|
dsBusket.FieldByName('PriceSum').AsFloat:=Q*P;
|
|
|
|
dsBusket.FieldByName('Remains').AsFloat:=dsOrder_Busket.FieldByName('Remains').AsFloat + Q;
|
|
dsBusket.FieldByName('RemainsCurrent').AsVariant:=dsOrder_Busket.FieldByName('Remains').AsVariant;
|
|
dsBusket.Post;
|
|
|
|
dsOrder_Busket.Next;
|
|
end;
|
|
|
|
dsBusket.First;
|
|
|
|
GlobalLogger.Log('Заполнение временного датасета. Финиш');
|
|
finally
|
|
dsBusket.EnableControls;
|
|
CopyingRecords:=False;
|
|
end;
|
|
finally
|
|
dsOrder_Busket.Free;
|
|
end;
|
|
end;
|
|
|
|
procedure TfrmOrderGoods.BusketFieldsDefine;
|
|
begin
|
|
dsBusket.FieldDefs.Add('ID_Order', ftDbKey);
|
|
dsBusket.FieldDefs.Add('Selected', ftInteger);
|
|
dsBusket.FieldDefs.Add('ID_Order_List', ftDbKey);
|
|
dsBusket.FieldDefs.Add('ID_Good', ftDbKey);
|
|
dsBusket.FieldDefs.Add('Good_Name', ftString, 250);
|
|
dsBusket.FieldDefs.Add('Price', ftFloat);
|
|
dsBusket.FieldDefs.Add('PriceSum', ftFloat);
|
|
dsBusket.FieldDefs.Add('Quantity', ftFloat);
|
|
dsBusket.FieldDefs.Add('Dealer', ftInteger);
|
|
dsBusket.FieldDefs.Add('Remains', ftFloat);
|
|
dsBusket.FieldDefs.Add('RemainsCurrent', ftFloat);
|
|
dsBusket.CreateTable;
|
|
end;
|
|
|
|
const
|
|
BackSpaceTag = 100;
|
|
|
|
procedure TfrmOrderGoods.OnKeyboardClick(Sender: TObject);
|
|
var S,Q:String;
|
|
begin
|
|
if ActiveControl = nil then Exit;
|
|
|
|
Q:=dsBusket.FieldByName('Quantity').AsString;
|
|
if TComponent(Sender).Tag = BackSpaceTag then
|
|
begin
|
|
S:='';
|
|
if Length(Q) > 0 then S:=Copy(Q, 1, Length(Q)-1);
|
|
end
|
|
else
|
|
begin
|
|
S:=Q + IntToStr(TComponent(Sender).Tag);
|
|
end;
|
|
dsBusket.FieldByName('Quantity').AsString:=S;
|
|
dsBusketBeforePost(dsBusket);
|
|
end;
|
|
|
|
procedure TfrmOrderGoods.KeyboardCreate;
|
|
var n:integer;
|
|
ButWidth:Integer;
|
|
ButWidthF:double;
|
|
|
|
function ButtonCreate(Caption:string; LeftPos, TagN:Integer):TButton;
|
|
var B:TButton;
|
|
begin
|
|
B:=TButton.Create(self);
|
|
B.Parent:=pnlKeyboard;
|
|
|
|
B.BorderWidth:=0;
|
|
B.Font.Name:='Sans';
|
|
B.Font.Size:=7;
|
|
|
|
B.Left:=LeftPos;
|
|
B.Top:=0;
|
|
B.Width:=ButWidth;
|
|
B.Height:=pnlKeyboard.Height;
|
|
B.Caption:=Caption;
|
|
B.OnClick:=@OnKeyboardClick;
|
|
B.Tag:=TagN;
|
|
|
|
KeyboardControls.Add(B);
|
|
Result:=B;
|
|
end;
|
|
|
|
begin
|
|
KeyboardControls.Clear;
|
|
|
|
ButWidthF:=pnlKeyboard.Width/11;
|
|
ButWidth:=trunc(ButWidthF);
|
|
|
|
for n:=0 to 9 do
|
|
begin
|
|
ButtonCreate(IntToStr(n), trunc(n*ButWidthF), n);
|
|
end;
|
|
ButtonCreate('<', trunc((n+1)*ButWidthF), BackSpaceTag);
|
|
end;
|
|
|
|
procedure TfrmOrderGoods.DealerPickListFill;
|
|
var SQL:TSqlite3Dataset;
|
|
C:TRxColumn;
|
|
begin
|
|
GlobalLogger.Log('Заполнение picklist для столбца дилер');
|
|
|
|
C:=grdBusket.ColumnByFieldName('Dealer');
|
|
C.KeyList.Clear;
|
|
C.PickList.Clear;
|
|
|
|
SQL:=nil;
|
|
try
|
|
SQL:=BaseConnect.DatasetCreate('select d.id, d.Name from Dealers d order by d.Name');
|
|
while not SQL.EOF do
|
|
begin
|
|
C.KeyList.Add( SQL.FieldByName('id').AsString );
|
|
C.PickList.Add( SQL.FieldByName('Name').AsString );
|
|
SQL.Next;
|
|
end;
|
|
finally
|
|
SQL.Free;
|
|
end;
|
|
end;
|
|
|
|
constructor TfrmOrderGoods.Create(AOwner: TComponent);
|
|
begin
|
|
GlobalLogger.Log('constructor TfrmOrderGoods.Create. Старт');
|
|
|
|
FId_Order:=-1;
|
|
FGoodShowType:=gstBusket;
|
|
CopyingRecords:=false;
|
|
KeyboardControls:=TComponentList.create(true);
|
|
KeyboardControls.OwnsObjects:=True;
|
|
|
|
Inherited;
|
|
|
|
BusketFieldsDefine;
|
|
KeyboardCreate;
|
|
|
|
GlobalLogger.Log('constructor TfrmOrderGoods.Create. Финиш');
|
|
end;
|
|
|
|
destructor TfrmOrderGoods.Destroy;
|
|
begin
|
|
KeyboardControls.Free;
|
|
|
|
inherited Destroy;
|
|
end;
|
|
|
|
|
|
initialization
|
|
{$I uordergoods.lrs}
|
|
|
|
end.
|
|
|