📄 pr110.pas
字号:
sNewProductID, sOldProductID : String;
begin
inherited;
if ReSortting then Exit;
fNewPurchaseQuantity := 0;
fOldPurchaseQuantity := 0;
fNewPurchaseAmount := 0;
fOldPurchaseAmount := 0;
sNewProductID := '';
sOldProductID := '';
case UpdateKind of
ukInsert :
begin
fNewPurchaseQuantity := DataSet.FieldByName('PurchaseQuantity').NewValue;
fOldPurchaseQuantity := 0;
fNewPurchaseAmount := DataSet.FieldByName('PurchaseAmount').NewValue;
fOldPurchaseAmount := 0;
sNewProductID := DataSet.FieldByName('ProductID').NewValue;
sOldProductID := DataSet.FieldByName('ProductID').NewValue;
with DM.qyTemp1 do
begin
Close;
SQL.Clear;
SQL.Add('UPDATE Product SET LastPurchaseDate = :LastPurchaseDate ');
SQL.Add('WHERE CompanyID = :CompanyID AND ProductID = :ProductID ');
ParamByName('CompanyID').AsString := sCompanyID;
ParamByName('ProductID').AsString := DataSet.FieldByName('ProductID').AsString;
ParamByName('LastPurchaseDate').AsString := qyMaster.FieldByName('PurchaseDate').AsString;
ExecSQL;
end;
end;
ukModify :
begin
fNewPurchaseQuantity := DataSet.FieldByName('PurchaseQuantity').NewValue;
fOldPurchaseQuantity := DataSet.FieldByName('PurchaseQuantity').OldValue;
fNewPurchaseAmount := DataSet.FieldByName('PurchaseAmount').NewValue;
fOldPurchaseAmount := DataSet.FieldByName('PurchaseAmount').OldValue;
sNewProductID := DataSet.FieldByName('ProductID').NewValue;
sOldProductID := DataSet.FieldByName('ProductID').OldValue;
end;
ukDelete :
begin
fNewPurchaseQuantity := 0;
fOldPurchaseQuantity := DataSet.FieldByName('PurchaseQuantity').OldValue;
fNewPurchaseAmount := 0;
fOldPurchaseAmount := DataSet.FieldByName('PurchaseAmount').OldValue;
sNewProductID := DataSet.FieldByName('ProductID').OldValue;
sOldProductID := DataSet.FieldByName('ProductID').OldValue;
end;
end;
if (sPrevPurchaseProperty = '5') or (sPrevPurchaseProperty = '6') then
begin
UpdatePurchaseAnalyst(sPrevPurchaseDate, sPrevSupplierID,
sOldProductID, sPrevPurchaseProperty,
(fOldPurchaseQuantity * -1),
(fOldPurchaseAmount * -1));
UpdatePurchaseAnalyst(sPrevPurchaseDate, sPrevSupplierID,
sNewProductID, sPrevPurchaseProperty,
(fNewPurchaseQuantity),
(fNewPurchaseAmount));
end;
if (sPrevPurchaseProperty = '7') then
begin
UpdateSupplierInventory(sPrevSupplierID, sOldProductID,
(fOldPurchaseQuantity * -1));
UpdateSupplierInventory(sPrevSupplierID, sNewProductID,
fNewPurchaseQuantity);
end;
if (sPrevPurchaseProperty = '8') then
begin
UpdateSupplierInventory(sPrevSupplierID, sOldProductID,
(fOldPurchaseQuantity));
UpdateSupplierInventory(sPrevSupplierID, sNewProductID,
fNewPurchaseQuantity * -1);
end;
UpdateInventoryAnalyst(sPrevPurchaseDate, sOldProductID,
sPrevWarehouseID, '0' + sPrevPurchaseProperty,
(fOldPurchaseQuantity * -1),
(fOldPurchaseAmount * -1));
UpdateInventoryAnalyst(sPrevPurchaseDate, sNewProductID,
sPrevWarehouseID, '0' + sPrevPurchaseProperty,
fNewPurchaseQuantity,
fNewPurchaseAmount);
end;
procedure TfmPR110.UpdatePurchaseAnalyst(PurchaseDate, SupplierID,
ProductID, PurchaseProperty: String; PurchaseQuantity,
PurchaseAmount: Extended);
begin
with qyTemp do
begin
Close;
SQL.Clear;
SQL.Add('SELECT SupplierID ');
SQL.Add('FROM PurchaseAnalyst ');
SQL.Add('WHERE CompanyID = :CompanyID ');
SQL.Add('AND PurchaseYear = :PurchaseYear AND PurchaseMonth = :PurchaseMonth ');
SQL.Add('AND SupplierID = :SupplierID AND ProductID = :ProductID ');
ParamByName('CompanyID').AsString := sCompanyID;
ParamByName('PurchaseYear').AsString := LeftStr(PurchaseDate, 2);
ParamByName('PurchaseMonth').AsString := SubStr(PurchaseDate, 4, 2);
ParamByName('SupplierID').AsString := SupplierID;
ParamByName('ProductID').AsString := ProductID;
Open;
end;
if qyTemp.FieldByName('SupplierID').AsString = '' then
begin
with qyTemp2 do
begin
Close;
SQL.Clear;
SQL.Add('INSERT INTO PurchaseAnalyst ');
SQL.Add(' (CompanyID, PurchaseYear, PurchaseMonth, SupplierID, ProductID, ');
SQL.Add(' PurchaseQuantity, PurchaseAmount, PurchaseReturnQuantity, PurchaseReturnAmount) ');
SQL.Add('VALUES ');
SQL.Add(' (:CompanyID, :PurchaseYear, :PurchaseMonth, :SupplierID, :ProductID, ');
SQL.Add(' :PurchaseQuantity, :PurchaseAmount, :PurchaseReturnQuantity, :PurchaseReturnAmount) ');
ParamByName('CompanyID').AsString := sCompanyID;
ParamByName('PurchaseYear').AsString := LeftStr(PurchaseDate, 2);
ParamByName('PurchaseMonth').AsString := SubStr(PurchaseDate, 4, 2);
ParamByName('SupplierID').AsString := SupplierID;
ParamByName('ProductID').AsString := ProductID;
if PurchaseProperty = '5' then
begin
ParamByName('PurchaseQuantity').AsFloat := PurchaseQuantity;
ParamByName('PurchaseAmount').AsFloat := PurchaseAmount;
ParamByName('PurchaseReturnQuantity').AsFloat := 0;
ParamByName('PurchaseReturnAmount').AsFloat := 0;
end
else
begin
ParamByName('PurchaseQuantity').AsFloat := 0;
ParamByName('PurchaseAmount').AsFloat := 0;
ParamByName('PurchaseReturnQuantity').AsFloat := PurchaseQuantity;
ParamByName('PurchaseReturnAmount').AsFloat := PurchaseAmount;
end;
ExecSQL;
end;
end
else
begin
with qyTemp2 do
begin
Close;
SQL.Clear;
SQL.Add('UPDATE PurchaseAnalyst ');
SQL.Add('SET PurchaseQuantity = PurchaseQuantity + :PurchaseQuantity, ');
SQL.Add(' PurchaseAmount = PurchaseAmount + :PurchaseAmount, ');
SQL.Add(' PurchaseReturnQuantity = PurchaseReturnQuantity + :PurchaseReturnQuantity, ');
SQL.Add(' PurchaseReturnAmount = PurchaseReturnAmount + :PurchaseReturnAmount ');
SQL.Add('WHERE CompanyID = :CompanyID ');
SQL.Add('AND PurchaseYear = :PurchaseYear AND PurchaseMonth = :PurchaseMonth ');
SQL.Add('AND SupplierID = :SupplierID AND ProductID = :ProductID ');
ParamByName('CompanyID').AsString := sCompanyID;
ParamByName('PurchaseYear').AsString := LeftStr(PurchaseDate, 2);
ParamByName('PurchaseMonth').AsString := SubStr(PurchaseDate, 4, 2);
ParamByName('SupplierID').AsString := SupplierID;
ParamByName('ProductID').AsString := ProductID;
if PurchaseProperty = '5' then
begin
ParamByName('PurchaseQuantity').AsFloat := PurchaseQuantity;
ParamByName('PurchaseAmount').AsFloat := PurchaseAmount;
ParamByName('PurchaseReturnQuantity').AsFloat := 0;
ParamByName('PurchaseReturnAmount').AsFloat := 0;
end
else
begin
ParamByName('PurchaseQuantity').AsFloat := 0;
ParamByName('PurchaseAmount').AsFloat := 0;
ParamByName('PurchaseReturnQuantity').AsFloat := PurchaseQuantity;
ParamByName('PurchaseReturnAmount').AsFloat := PurchaseAmount;
end;
ExecSQL;
end;
end;
end;
procedure TfmPR110.UpdateSupplierInventory(SupplierID, ProductID: String;
Quantity: Extended);
begin
with qyTemp do
begin
Close;
SQL.Clear;
SQL.Add('SELECT SupplierID ');
SQL.Add('FROM SupplierInventory ');
SQL.Add('WHERE CompanyID = :CompanyID ');
SQL.Add('AND SupplierID = :SupplierID AND ProductID = :ProductID ');
ParamByName('CompanyID').AsString := sCompanyID;
ParamByName('SupplierID').AsString := SupplierID;
ParamByName('ProductID').AsString := ProductID;
Open;
end;
if qyTemp.FieldByName('SupplierID').AsString = '' then
begin
with qyTemp2 do
begin
Close;
SQL.Clear;
SQL.Add('INSERT INTO SupplierInventory ');
SQL.Add(' (CompanyID, SupplierID, ProductID, Quantity)');
SQL.Add('VALUES ');
SQL.Add(' (:CompanyID, :SupplierID, :ProductID, :Quantity) ');
ParamByName('CompanyID').AsString := sCompanyID;
ParamByName('SupplierID').AsString := SupplierID;
ParamByName('ProductID').AsString := ProductID;
ParamByName('Quantity').AsFloat := Quantity;
ExecSQL;
end;
end
else
begin
with qyTemp2 do
begin
Close;
SQL.Clear;
SQL.Add('UPDATE SupplierInventory ');
SQL.Add('SET Quantity = Quantity + :Quantity ');
SQL.Add('WHERE CompanyID = :CompanyID ');
SQL.Add('AND SupplierID = :SupplierID AND ProductID = :ProductID ');
ParamByName('CompanyID').AsString := sCompanyID;
ParamByName('SupplierID').AsString := SupplierID;
ParamByName('ProductID').AsString := ProductID;
ParamByName('Quantity').AsFloat := Quantity;
ExecSQL;
end;
end;
end;
procedure TfmPR110.qyMasterSupplierIDValidate(Sender: TField);
begin
inherited;
qyMaster.FieldByName('SupplierAttribName').AsString :=
GetSupplierAttribName(qyMaster.FieldByName('SupplierID').AsString);
end;
procedure TfmPR110.qyMasterWarehouseIDValidate(Sender: TField);
begin
inherited;
qyMaster.FieldByName('WarehouseName').AsString :=
GetWarehouseName(qyMaster.FieldByName('WarehouseID').AsString);
end;
procedure TfmPR110.qyDetailProductIDValidate(Sender: TField);
begin
inherited;
qyDetail.FieldByName('ProductName').AsString :=
GetProductName(qyDetail.FieldByName('ProductID').AsString);
end;
procedure TfmPR110.gdDetailEditButtonClick(Sender: TObject);
begin
inherited;
if (gdDetail.SelectedField.FieldName = 'ProductID') and
(qyDetail.State in [dsInsert, dsEdit]) then
qyDetail.FieldByName('ProductID').AsString := SearchData(edProductID, DM.qyProduct);
end;
procedure TfmPR110.qyDetailAfterInsert(DataSet: TDataSet);
begin
inherited;
gdDetail.SelectedField := qyDetailProductID;
end;
procedure TfmPR110.dsMasterStateChange(Sender: TObject);
begin
inherited;
rgPurchaseProperty.ReadOnly := (qyMaster.State <> dsInsert);
ED2.ReadOnly := (qyMaster.State <> dsInsert);
ED3.ReadOnly := (qyMaster.State <> dsInsert);
sbPurchaseDate.Enabled := (qyMaster.State = dsInsert);
sbSupplierID.Enabled := (qyMaster.State = dsInsert);
sbWarehouseID.Enabled := (qyMaster.State = dsInsert);
end;
procedure TfmPR110.GetPrevValue;
begin
inherited;
sPrevPurchaseDate := qyMaster.FieldByName('PurchaseDate').AsString;
sPrevSupplierID := qyMaster.FieldByName('SupplierID').AsString;
sPrevWarehouseID := qyMaster.FieldByName('WarehouseID').AsString;
sPrevPurchaseProperty := qyMaster.FieldByName('PurchaseProperty').AsString;
end;
procedure TfmPR110.qyMasterUpdateRecord(DataSet: TDataSet;
UpdateKind: TUpdateKind; var UpdateAction: TUpdateAction);
begin
inherited;
if UpdateKind = ukInsert then
begin
with qyTemp do
begin
Close;
SQL.Clear;
SQL.Add('UPDATE Supplier SET LastPurchaseDate = :LastPurchaseDate ');
SQL.Add('WHERE CompanyID = :CompanyID AND SupplierID = :SupplierID ');
ParamByName('CompanyID').AsString := sCompanyID;
ParamByName('SupplierID').AsString := DataSet.FieldByName('SupplierID').NewValue;
ParamByName('LastPurchaseDate').AsString := DataSet.FieldByName('PurchaseDate').NewValue;
ExecSQL;
end;
end;
end;
procedure TfmPR110.sbSelectClick(Sender: TObject);
begin
inherited;
ReData := False;
qyMaster.DisableControls;
try
fmPR110Select := TfmPR110Select.Create(Application);
fmPR110Select.ShowModal;
if ReData then begin
try
fmLoading := TfmLoading.Create(Application);
fmLoading.Show;
fmLoading.Update;
qyMaster.Close;
qyMaster.Open;
finally
fmLoading.Hide;
fmLoading.Free;
end;
end;
finally
qyMaster.EnableControls;
fmPR110Select.Free;
end;
end;
procedure TfmPR110.sbReportClick(Sender: TObject);
begin
inherited;
PR110Print(qyMaster.FieldByName('PurchaseID').AsString);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -