📄 invprintdm.pas
字号:
Parameters.ParamByName('UserID').Value := AUserID;
try
Open;
except
Result := -1;
Exit;
// Add write log file method here
end;
if not Eof then
begin
APassword := FieldByName('Pwd').asString;
Result := 0;
end else Result := 1;
end;
end;
procedure TdmInvPrint.OpenCodeTable;
begin
AtabArea.Open;
AtabBook.Open;
AtabTown.Open;
AtabCopier.Open;
AtabUsers.Open;
AtabPaymode.Open;
AtabUsager.Open;
end;
procedure TdmInvPrint.AtabWaterfeeCalcFields(DataSet: TDataSet);
begin
with AtabWaterfee do
begin
//FieldByName('Waterfee').Value := FieldbyName('Qty').AsInteger * FieldbyName('sPrice').AsCurrency;
FieldByName('Sewage').Value := FieldByName('Quantity').AsInteger * FieldByName('wPrice').AsCurrency * FieldbyName('SewagePercent').AsFloat;
FieldByName('Amont').Value := FieldByName('Waterfee').AsCurrency + FieldByName('Sewage').AsCurrency;
end;
end;
procedure TdmInvPrint.CloseCodeTable;
begin
AtabArea.Close;
AtabBook.Close;
AtabTown.Close;
AtabCopier.Close;
AtabUsers.Close;
AtabPaymode.Close;
AtabUsager.Close;
end;
function TdmInvPrint.UpdateCustCopiesbuf(Aid: string; ACurrQty, APriorQty,
ADerate: Integer): Boolean;
// 更新客户上期用水刻度值
begin
Result := False;
with Aqrytmp do
try
Close;
SQL.Clear;
SQL.Add('Update Customer set CurrQty = :CurrQty, PriorQty = :PriorQty, Derate = :Derate, Copiesdate = :Copiesdate, Modifier = :Modifier, Modifydate = :Modifydate where CustID = :CustID');
Parameters.ParamByName('CurrQty').Value := ACurrQty;
Parameters.ParamByName('PriorQty').Value := APriorQty;
Parameters.ParamByName('Derate').Value := ADerate;
Parameters.ParamByName('Copiesdate').Value := Date;
Parameters.ParamByName('Modifier').Value := GUserID;
Parameters.ParamByName('Modifydate').Value := Date;
Parameters.ParamByName('CustID').Value := Aid;
try
ExecSQL;
except
end;
Result := True;
finally
Close;
end;
end;
function TdmInvPrint.UpdateCustDegreebuf(Aid: string;
Adegreebuf: Integer): Boolean;
// 更新客户上期用水量
begin
Result := False;
with Aqrytmp do
try
Close;
SQL.Clear;
SQL.Add('Update Customer set Degreebuf = :Degreebuf where CustID = :CustID');
Parameters.ParamByName('Degreebuf').Value := Adegreebuf;
Parameters.ParamByName('CustID').Value := Aid;
try
ExecSQL;
except
end;
Result := True;
finally
Close;
end;
end;
procedure TdmInvPrint.AtabCustomerCalcFields(DataSet: TDataSet);
// 计算客户本期用水量
begin
with AtabCustomer do
FieldByName('Qty').Value := FieldByName('CurrQty').AsInteger - FieldByName('PriorQty').AsInteger -
FieldByName('Derate').AsInteger;
end;
procedure TdmInvPrint.AqryPrintCalcFields(DataSet: TDataSet);
// 计算客户本期应缴金额
begin
with AqryPrint do
begin
FieldByName('Amont').Value := FieldByName('Waterfee').AsCurrency +
FieldByName('Quantity').AsInteger * FieldByName('wPrice').AsCurrency * FieldByName('SewagePercent').AsFloat;
FieldByName('BigAmont').Value := NumToChsCurrency(FieldByName('Amont').AsFloat);
// 此处引用了发票打印窗口的属性,可以不这样做
{$IFDEF DJSR}
FieldByName('Item').Value := frmBrowseInvoicePrint.Item;
FieldByName('Units').Value := frmBrowseInvoicePrint.Units;
{$ENDIF DJSR}
end;
end;
procedure TdmInvPrint.AtabTownBeforePost(DataSet: TDataSet);
begin
with DataSet do
begin
FieldByName('Modifier').Value := GUserID;
FieldByName('Modifydate').Value := Date;
end;
end;
function TdmInvPrint.GetUserName(Aid: string): string;
// 返回指定编号的用户名
begin
with Aqrytmp do
try
Close;
SQL.Clear;
SQL.Add(Format('select Name from Users where UserID = ''%s''', [Aid]));
try
Open;
except
Result := '';
Exit;
end;
if not IsEmpty then
Result := FieldByName('Name').AsString
else
Result := '';
finally
Close;
end;
end;
function TdmInvPrint.ChargeWaterfee(Aid: Integer; APayflag: Boolean;
APayment: Double; APaydate: TDateTime; ACollector,
AInvoice: string): Boolean;
// 收费或将已经收费的记录转为未缴款
begin
Result := False;
with Aqrytmp do
try
Close;
SQL.Clear;
SQL.Add('Update Waterfee set Payflag=:Payflag, Payment=:Payment, Paydate=:Paydate, Collector=:Collector, Invoice=:Invoice, Modifier=:Modifier, Modifydate=:Modifydate where WRID=:WRID');
if APayflag then // 缴费
begin
Parameters.ParamByName('Payflag').Value := APayflag;
Parameters.ParamByName('Payment').Value := APayment;
Parameters.ParamByName('Paydate').Value := APaydate;
Parameters.ParamByName('Collector').Value := ACollector;
Parameters.ParamByName('Invoice').Value := AInvoice;
Parameters.ParamByName('Modifier').Value := GUserID;
Parameters.ParamByName('Modifydate').Value:= Date;
Parameters.ParamByName('WRID').Value := Aid;
end else
begin
Parameters.ParamByName('Payflag').Value := False;
Parameters.ParamByName('Payment').Value := NULL;
Parameters.ParamByName('Paydate').Value := NULL;
Parameters.ParamByName('Collector').Value := NULL;
Parameters.ParamByName('Invoice').Value := NULL;
Parameters.ParamByName('Modifier').Value := GUserID;
Parameters.ParamByName('Modifydate').Value:= Date;
Parameters.ParamByName('WRID').Value := Aid;
end;
try
ExecSQL;
except
end;
Result := True;
finally
Close;
end;
end;
procedure TdmInvPrint.AqryMonthChargeReportCalcFields(DataSet: TDataSet);
begin
with AqryMonthChargeReport do
begin
FieldByName('Qty').Value := FieldByName('CurrQty').AsInteger - FieldByName('PriorQty').AsInteger -
FieldByName('Derate').AsInteger;
FieldByName('Waterfee').Value := FieldByName('Qty').AsInteger * FieldByName('sPrice').AsCurrency;
FieldByName('Sewage').Value := FieldByName('Qty').AsInteger * FieldByName('wPrice').AsCurrency * FieldByName('SewagePercent').AsFloat;
FieldByName('Amont').Value := FieldByName('Qty').AsInteger * FieldByName('sPrice').AsCurrency +
FieldByName('Qty').AsInteger * FieldByName('wPrice').AsCurrency * FieldByName('SewagePercent').AsFloat;
end;
end;
procedure TdmInvPrint.RMReportGetValue(const ParName: String;
var ParValue: Variant);
begin
if ParName = 'Company' then
ParValue := GetCompanyName;
if ParName = 'Username' then
ParValue := GUsername;
end;
function TdmInvPrint.GetCompanyName: string;
// 返回系统注册组织名称
var
Afilename: string;
begin
Result := '';
Afilename := ExtractFilePath(Application.ExeName) + 'DjsrInvPrinter.ini';
if not FileExists(Afilename) then
Exit;
with TIniFile.Create(Afilename) do
try
// 单位信息
if SectionExists('Normal') then
if ValueExists('Normal', 'Company') then
GCompany := ReadString('Normal', 'Company', '');
finally
Free;
end;
Result := GCompany;
end;
procedure TdmInvPrint.UpdateCustomerDegree(Aid: string);
// 更新客户最后一次抄表记录
function GetLastDegree(Aid: string; var ACurrQty, APriorQty, ADerate: Integer): Boolean;
begin
Result := False;
with Aqrytmp do
try
Close;
SQL.Clear;
SQL.Add(Format('select top 1 * from Waterfee where CustID = ''%s'' order by Copiesdate desc, CurrQty desc', [Aid]));
try
Open;
except
Exit;
end;
if not IsEmpty then
begin
ACurrQty := FieldByname('CurrQty').AsInteger;
APriorQty := FieldByName('PriorQty').AsInteger;
ADerate := FieldByName('Derate').AsInteger;
Result := True;
end else
begin
ACurrQty := 0;
APriorQty := 0;
ADerate := 0;
Result := True;
end;
finally
Close;
end;
end;
var
APriorQty, ACurrQty, ADerate: Integer;
begin
APriorQty := -1;
ACurrQty := -1;
ADerate := -1;
if GetLastDegree(Aid, ACurrQty, APriorQty, ADerate) then
UpdateCustCopiesbuf(Aid, AcurrQty, APriorQty, Aderate);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -