📄 sy990.pas
字号:
fUnitPrice := RealToInt(qyTemp.FieldByName('TotalAmount').AsFloat /
qyTemp.FieldByName('TotalQuantity').AsFloat);
with qyUpdateInventoryBeginning do
begin
ParamByName('CompanyID').AsString := sCompanyID;
ParamByName('InventoryYear').AsString := LeftStr(sEndPeriodDate, 2);
ParamByName('InventoryMonth').AsString := SubStr(sEndPeriodDate, 4, 2);
ParamByName('WarehouseID').AsString := qyTemp.FieldByName('WarehouseID').AsString;
ParamByName('ProductID').AsString := qyTemp.FieldByName('ProductID').AsString;
ParamByName('BeginningQuantity').AsFloat := 0;
ParamByName('BeginningBalance').AsFloat := fBeginningQuantity * fUnitPrice;
ExecSQL;
end;
qyTemp.Next;
end;
ProgressPostiotn(40);
with qyTemp do
begin
Close;
SQL.Clear;
SQL.Add('DELETE FROM AccountReceivableBeginning ');
SQL.Add('WHERE CompanyID = :CompanyID ');
SQL.Add('AND BeginningYear = :BeginningYear ');
SQL.Add('AND BeginningMonth = :BeginningMonth ');
ParamByName('CompanyID').AsString := sCompanyID;
ParamByName('BeginningYear').AsString := LeftStr(sEndPeriodDate, 2);
ParamByName('BeginningMonth').AsString := SubStr(sEndPeriodDate, 4, 2);
ExecSQL;
end;
ProgressPostiotn(44);
with qyTemp do
begin
Close;
SQL.Clear;
SQL.Add('SELECT CustomerID, BeginningBalance ');
SQL.Add('FROM AccountReceivableBeginning ');
SQL.Add('WHERE CompanyID = :CompanyID ');
SQL.Add('AND BeginningYear = :BeginningYear ');
SQL.Add('AND BeginningMonth = :BeginningMonth ');
ParamByName('CompanyID').AsString := sCompanyID;
ParamByName('BeginningYear').AsString := LeftStr(sStartPeriodDate, 2);
ParamByName('BeginningMonth').AsString := SubStr(sStartPeriodDate, 4, 2);
Open;
end;
ProgressPostiotn(48);
qyTemp.First;
while not qyTemp.Eof do
begin
with qyInsertAccountReceivableBeginning do
begin
ParamByName('CompanyID').AsString := sCompanyID;
ParamByName('BeginningYear').AsString := LeftStr(sEndPeriodDate, 2);
ParamByName('BeginningMonth').AsString := SubStr(sEndPeriodDate, 4, 2);
ParamByName('CustomerID').AsString := qyTemp.FieldByName('CustomerID').AsString;
ParamByName('BeginningBalance').AsFloat := qyTemp.FieldByName('BeginningBalance').AsFloat;
ExecSQL;
end;
qyTemp.Next;
end;
ProgressPostiotn(52);
with qyTemp do
begin
Close;
SQL.clear;
SQL.Add('SELECT CustomerID, AccountReceivable ');
SQL.Add('FROM DeliveryMaster ');
SQL.Add('WHERE CompanyID = :CompanyID ');
SQL.Add('AND DeliveryDate >= :BeginDeliveryDate ');
SQL.Add('AND DeliveryDate <= :EndDeliveryDate ');
SQL.Add('AND DeliveryProperty IN (''1'', ''2'') ');
ParamByName('CompanyID').AsString := sCompanyID;
ParamByName('BeginDeliveryDate').AsString := sStartPeriodDate;
ParamByName('EndDeliveryDate').AsString := LeftStr(sStartPeriodDate, 6) + '31';
Open;
end;
ProgressPostiotn(56);
qyTemp.First;
while not qyTemp.Eof do
begin
with qyAccountReceivableBeginning do
begin
Close;
ParamByName('CompanyID').AsString := sCompanyID;
ParamByName('BeginningYear').AsString := LeftStr(sEndPeriodDate, 2);
ParamByName('BeginningMonth').AsString := SubStr(sEndPeriodDate, 4, 2);
ParamByName('CustomerID').AsString := qyTemp.FieldByName('CustomerID').AsString;
Open;
end;
if qyAccountReceivableBeginning.FieldByName('CustomerID').AsString = '' then
begin
with qyInsertAccountReceivableBeginning do
begin
ParamByName('CompanyID').AsString := sCompanyID;
ParamByName('BeginningYear').AsString := LeftStr(sEndPeriodDate, 2);
ParamByName('BeginningMonth').AsString := SubStr(sEndPeriodDate, 4, 2);
ParamByName('CustomerID').AsString := qyTemp.FieldByName('CustomerID').AsString;
ParamByName('BeginningBalance').AsFloat := qyTemp.FieldByName('AccountReceivable').AsFloat;
ExecSQL;
end;
end
else
begin
with qyUpdateAccountReceivableBeginning do
begin
ParamByName('CompanyID').AsString := sCompanyID;
ParamByName('BeginningYear').AsString := LeftStr(sEndPeriodDate, 2);
ParamByName('BeginningMonth').AsString := SubStr(sEndPeriodDate, 4, 2);
ParamByName('CustomerID').AsString := qyTemp.FieldByName('CustomerID').AsString;
ParamByName('BeginningBalance').AsFloat := qyTemp.FieldByName('AccountReceivable').AsFloat;
ExecSQL;
end;
end;
qyTemp.Next;
end;
ProgressPostiotn(60);
with qyTemp do
begin
Close;
SQL.clear;
SQL.Add('SELECT CustomerID, TotalBalance ');
SQL.Add('FROM AccountReceivableMaster ');
SQL.Add('WHERE CompanyID = :CompanyID ');
SQL.Add('AND ReceiveDate >= :BeginReceiveDate ');
SQL.Add('AND ReceiveDate <= :EndReceiveDate ');
ParamByName('CompanyID').AsString := sCompanyID;
ParamByName('BeginReceiveDate').AsString := sStartPeriodDate;
ParamByName('EndReceiveDate').AsString := LeftStr(sStartPeriodDate, 6) + '31';
Open;
end;
ProgressPostiotn(64);
qyTemp.First;
while not qyTemp.Eof do
begin
with qyAccountReceivableBeginning do
begin
Close;
ParamByName('CompanyID').AsString := sCompanyID;
ParamByName('BeginningYear').AsString := LeftStr(sEndPeriodDate, 2);
ParamByName('BeginningMonth').AsString := SubStr(sEndPeriodDate, 4, 2);
ParamByName('CustomerID').AsString := qyTemp.FieldByName('CustomerID').AsString;
Open;
end;
if qyAccountReceivableBeginning.FieldByName('CustomerID').AsString = '' then
begin
with qyInsertAccountReceivableBeginning do
begin
ParamByName('CompanyID').AsString := sCompanyID;
ParamByName('BeginningYear').AsString := LeftStr(sEndPeriodDate, 2);
ParamByName('BeginningMonth').AsString := SubStr(sEndPeriodDate, 4, 2);
ParamByName('CustomerID').AsString := qyTemp.FieldByName('CustomerID').AsString;
ParamByName('BeginningBalance').AsFloat := qyTemp.FieldByName('TotalBalance').AsFloat * -1;
ExecSQL;
end;
end
else
begin
with qyUpdateAccountReceivableBeginning do
begin
ParamByName('CompanyID').AsString := sCompanyID;
ParamByName('BeginningYear').AsString := LeftStr(sEndPeriodDate, 2);
ParamByName('BeginningMonth').AsString := SubStr(sEndPeriodDate, 4, 2);
ParamByName('CustomerID').AsString := qyTemp.FieldByName('CustomerID').AsString;
ParamByName('BeginningBalance').AsFloat := qyTemp.FieldByName('TotalBalance').AsFloat * -1;
ExecSQL;
end;
end;
qyTemp.Next;
end;
ProgressPostiotn(68);
with qyTemp do
begin
Close;
SQL.Clear;
SQL.Add('DELETE FROM AccountPayableBeginning ');
SQL.Add('WHERE CompanyID = :CompanyID ');
SQL.Add('AND BeginningYear = :BeginningYear ');
SQL.Add('AND BeginningMonth = :BeginningMonth ');
ParamByName('CompanyID').AsString := sCompanyID;
ParamByName('BeginningYear').AsString := LeftStr(sEndPeriodDate, 2);
ParamByName('BeginningMonth').AsString := SubStr(sEndPeriodDate, 4, 2);
ExecSQL;
end;
ProgressPostiotn(72);
with qyTemp do
begin
Close;
SQL.Clear;
SQL.Add('SELECT SupplierID, BeginningBalance ');
SQL.Add('FROM AccountPayableBeginning ');
SQL.Add('WHERE CompanyID = :CompanyID ');
SQL.Add('AND BeginningYear = :BeginningYear ');
SQL.Add('AND BeginningMonth = :BeginningMonth ');
ParamByName('CompanyID').AsString := sCompanyID;
ParamByName('BeginningYear').AsString := LeftStr(sStartPeriodDate, 2);
ParamByName('BeginningMonth').AsString := SubStr(sStartPeriodDate, 4, 2);
Open;
end;
ProgressPostiotn(76);
qyTemp.First;
while not qyTemp.Eof do
begin
with qyInsertAccountPayableBeginning do
begin
ParamByName('CompanyID').AsString := sCompanyID;
ParamByName('BeginningYear').AsString := LeftStr(sEndPeriodDate, 2);
ParamByName('BeginningMonth').AsString := SubStr(sEndPeriodDate, 4, 2);
ParamByName('SupplierID').AsString := qyTemp.FieldByName('SupplierID').AsString;
ParamByName('BeginningBalance').AsFloat := qyTemp.FieldByName('BeginningBalance').AsFloat;
ExecSQL;
end;
qyTemp.Next;
end;
ProgressPostiotn(80);
with qyTemp do
begin
Close;
SQL.clear;
SQL.Add('SELECT SupplierID, AccountPayable ');
SQL.Add('FROM PurchaseMaster ');
SQL.Add('WHERE CompanyID = :CompanyID ');
SQL.Add('AND PurchaseDate >= :BeginPurchaseDate ');
SQL.Add('AND PurchaseDate <= :EndPurchaseDate ');
SQL.Add('AND PurchaseProperty IN (''5'', ''6'') ');
ParamByName('CompanyID').AsString := sCompanyID;
ParamByName('BeginPurchaseDate').AsString := sStartPeriodDate;
ParamByName('EndPurchaseDate').AsString := LeftStr(sStartPeriodDate, 6) + '31';
Open;
end;
ProgressPostiotn(84);
qyTemp.First;
while not qyTemp.Eof do
begin
with qyAccountPayableBeginning do
begin
Close;
ParamByName('CompanyID').AsString := sCompanyID;
ParamByName('BeginningYear').AsString := LeftStr(sEndPeriodDate, 2);
ParamByName('BeginningMonth').AsString := SubStr(sEndPeriodDate, 4, 2);
ParamByName('SupplierID').AsString := qyTemp.FieldByName('SupplierID').AsString;
Open;
end;
if qyAccountPayableBeginning.FieldByName('SupplierID').AsString = '' then
begin
with qyInsertAccountPayableBeginning do
begin
ParamByName('CompanyID').AsString := sCompanyID;
ParamByName('BeginningYear').AsString := LeftStr(sEndPeriodDate, 2);
ParamByName('BeginningMonth').AsString := SubStr(sEndPeriodDate, 4, 2);
ParamByName('SupplierID').AsString := qyTemp.FieldByName('SupplierID').AsString;
ParamByName('BeginningBalance').AsFloat := qyTemp.FieldByName('AccountPayable').AsFloat;
ExecSQL;
end;
end
else
begin
with qyUpdateAccountPayableBeginning do
begin
ParamByName('CompanyID').AsString := sCompanyID;
ParamByName('BeginningYear').AsString := LeftStr(sEndPeriodDate, 2);
ParamByName('BeginningMonth').AsString := SubStr(sEndPeriodDate, 4, 2);
ParamByName('SupplierID').AsString := qyTemp.FieldByName('SupplierID').AsString;
ParamByName('BeginningBalance').AsFloat := qyTemp.FieldByName('AccountPayable').AsFloat;
ExecSQL;
end;
end;
qyTemp.Next;
end;
ProgressPostiotn(88);
with qyTemp do
begin
Close;
SQL.clear;
SQL.Add('SELECT SupplierID, TotalBalance ');
SQL.Add('FROM AccountPayableMaster ');
SQL.Add('WHERE CompanyID = :CompanyID ');
SQL.Add('AND PayDate >= :BeginPayDate ');
SQL.Add('AND PayDate <= :EndPayDate ');
ParamByName('CompanyID').AsString := sCompanyID;
ParamByName('BeginPayDate').AsString := sStartPeriodDate;
ParamByName('EndPayDate').AsString := LeftStr(sStartPeriodDate, 6) + '31';
Open;
end;
ProgressPostiotn(92);
qyTemp.First;
while not qyTemp.Eof do
begin
with qyAccountPayableBeginning do
begin
Close;
ParamByName('CompanyID').AsString := sCompanyID;
ParamByName('BeginningYear').AsString := LeftStr(sEndPeriodDate, 2);
ParamByName('BeginningMonth').AsString := SubStr(sEndPeriodDate, 4, 2);
ParamByName('SupplierID').AsString := qyTemp.FieldByName('SupplierID').AsString;
Open;
end;
if qyAccountPayableBeginning.FieldByName('SupplierID').AsString = '' then
begin
with qyInsertAccountPayableBeginning do
begin
ParamByName('CompanyID').AsString := sCompanyID;
ParamByName('BeginningYear').AsString := LeftStr(sEndPeriodDate, 2);
ParamByName('BeginningMonth').AsString := SubStr(sEndPeriodDate, 4, 2);
ParamByName('SupplierID').AsString := qyTemp.FieldByName('SupplierID').AsString;
ParamByName('BeginningBalance').AsFloat := qyTemp.FieldByName('TotalBalance').AsFloat * -1;
ExecSQL;
end;
end
else
begin
with qyUpdateAccountPayableBeginning do
begin
ParamByName('CompanyID').AsString := sCompanyID;
ParamByName('BeginningYear').AsString := LeftStr(sEndPeriodDate, 2);
ParamByName('BeginningMonth').AsString := SubStr(sEndPeriodDate, 4, 2);
ParamByName('SupplierID').AsString := qyTemp.FieldByName('SupplierID').AsString;
ParamByName('BeginningBalance').AsFloat := qyTemp.FieldByName('TotalBalance').AsFloat * -1;
ExecSQL;
end;
end;
qyTemp.Next;
end;
ProgressPostiotn(96);
with qyTemp do
begin
Close;
SQL.Clear;
SQL.Add('UPDATE Company ');
SQL.Add('SET PeriodYear = :PeriodYear, PeriodMonth = :PeriodMonth ');
SQL.Add('WHERE CompanyID = :CompanyID ');
ParamByName('CompanyID').AsString := sCompanyID;
ParamByName('PeriodYear').AsString := LeftStr(sEndPeriodDate, 2);
ParamByName('PeriodMonth').AsString := SubStr(sEndPeriodDate, 4, 2);
ExecSQL;
end;
ProgressPostiotn(100);
qyInsertInventoryBeginning.UnPrepare;
qyUpdateInventoryBeginning.UnPrepare;
qyInsertAccountReceivableBeginning.UnPrepare;
qyUpdateAccountReceivableBeginning.UnPrepare;
qyInsertAccountPayableBeginning.UnPrepare;
qyUpdateAccountPayableBeginning.UnPrepare;
DM.DB.Commit;
sStartPeriodDate := sEndPeriodDate;
sEndPeriodDate := AddMonth(sStartPeriodDate, 1);
MyInformation('月结操作完成');
Close;
except
DM.DB.Rollback;
MyError('月结操作失败!');
ProgressBar.Visible := False;
raise;
end;
end;
procedure TfmSY990.FormCreate(Sender: TObject);
begin
inherited;
ProgressBar.Visible := False;
end;
procedure TfmSY990.ProgressPostiotn(iPosition: Integer);
begin
ProgressBar.Position := iPosition;
ProgressBar.Update;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -