⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 invprintdm.pas

📁 供水营销打印程序源码
💻 PAS
📖 第 1 页 / 共 2 页
字号:
    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 + -