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

📄 invprintdm.pas

📁 供水营销打印程序源码
💻 PAS
📖 第 1 页 / 共 2 页
字号:
unit InvPrintDM;

interface

{$I InvPrinter.inc}

uses
  SysUtils, Classes, DB, ADODB, Forms, Wwintl, dxmdaset, RM_dset, RM_dbset,
  RM_class, Variants, IniFiles, RM_Desgn, RM_FormReport;

type
  TdmInvPrint = class(TDataModule)
    ADOConnection: TADOConnection;
    AtabCustomer: TADOTable;
    dsCustomer: TDataSource;
    AtabCustomerCustID: TWideStringField;
    AtabCustomerTownID: TWideStringField;
    AtabCustomerAreaID: TWideStringField;
    AtabCustomerBookID: TWideStringField;
    AtabCustomerName: TWideStringField;
    AtabCustomerContract: TWideStringField;
    AtabCustomerPhone: TWideStringField;
    AtabCustomerEmail: TWideStringField;
    AtabCustomerAddress: TWideStringField;
    AtabCustomerPayID: TWideStringField;
    AtabCustomerUsingID: TWideStringField;
    AtabCustomerAddtax: TWideStringField;
    AtabCustomerLatefeeflag: TBooleanField;
    AtabCustomerSewageflag: TBooleanField;
    AtabCustomerSewagePercent: TFloatField;
    AtabCustomerInstalldate: TDateTimeField;
    AtabCustomerLogoutflag: TBooleanField;
    AtabCustomerLogoutdate: TDateTimeField;
    AtabCustomerDegreebuf: TIntegerField;
    AtabCustomerCurrQty: TIntegerField;
    AtabCustomerPriorQty: TIntegerField;
    AtabCustomerDerate: TIntegerField;
    AtabCustomerCopier: TWideStringField;
    AtabCustomerModifier: TWideStringField;
    AtabCustomerModifydate: TDateTimeField;
    AtabCustomerDescription: TWideStringField;
    AtabArea: TADOTable;
    dsArea: TDataSource;
    AtabBook: TADOTable;
    dsBook: TDataSource;
    AtabTown: TADOTable;
    dsTown: TDataSource;
    AtabCopier: TADOTable;
    dsCopier: TDataSource;
    AtabUsager: TADOTable;
    dsUsager: TDataSource;
    AtabUsers: TADOTable;
    dsUsers: TDataSource;
    AtabWaterfee: TADOTable;
    dsWaterfee: TDataSource;
    AtabCustomerTownname: TStringField;
    AtabCustomerAreaname: TStringField;
    AtabCustomerBookname: TStringField;
    AtabPaymode: TADOTable;
    dsPaymode: TDataSource;
    AtabCustomerPayname: TStringField;
    AtabCustomerUsingname: TStringField;
    AtabCustomerCopiername: TStringField;
    AtabCustomerModifiername: TStringField;
    AqryTmp: TADOQuery;
    AtabCustomerCopiesdate: TDateTimeField;
    International: TwwIntl;
    AtabWaterfeeWRID: TAutoIncField;
    AtabWaterfeeCustID: TWideStringField;
    AtabWaterfeeName: TWideStringField;
    AtabWaterfeeAddress: TWideStringField;
    AtabWaterfeeAreaID: TWideStringField;
    AtabWaterfeeBookID: TWideStringField;
    AtabWaterfeeUsingID: TWideStringField;
    AtabWaterfeesPrice: TBCDField;
    AtabWaterfeewPrice: TBCDField;
    AtabWaterfeeSewagePercent: TIntegerField;
    AtabWaterfeeCopier: TWideStringField;
    AtabWaterfeeCopiesdate: TDateTimeField;
    AtabWaterfeePayflag: TBooleanField;
    AtabWaterfeePayment: TBCDField;
    AtabWaterfeeInvoice: TWideStringField;
    AtabWaterfeeCollector: TWideStringField;
    AtabWaterfeeBlankoutflag: TBooleanField;
    AtabWaterfeeBlankoutdate: TDateTimeField;
    AtabWaterfeeModifier: TWideStringField;
    AtabWaterfeeModifydate: TDateTimeField;
    AtabWaterfeeDescription: TWideStringField;
    AtabWaterfeeAreaname: TStringField;
    AtabWaterfeeBookname: TStringField;
    AtabWaterfeeUsingname: TStringField;
    AtabWaterfeeCopiername: TStringField;
    AtabWaterfeeCollectoername: TStringField;
    AtabWaterfeeModifiername: TStringField;
    AtabWaterfeePaydate: TDateField;
    AtabWaterfeeSewage: TCurrencyField;
    AtabWaterfeeAmont: TCurrencyField;
    AtabCustomerQty: TIntegerField;
    AqryPrint: TADOQuery;
    dsPrint: TDataSource;
    AqryPrintWRID: TAutoIncField;
    AqryPrintCustID: TWideStringField;
    AqryPrintName: TWideStringField;
    AqryPrintAddress: TWideStringField;
    AqryPrintsPrice: TBCDField;
    AqryPrintwPrice: TBCDField;
    AqryPrintSewagePercent: TIntegerField;
    AqryPrintCopiesdate: TDateTimeField;
    AqryPrintPayflag: TBooleanField;
    AqryPrintPayment: TBCDField;
    AqryPrintPaydate: TDateTimeField;
    AqryPrintBigAmont: TStringField;
    AqryPrintAmont: TCurrencyField;
    mtabPrint: TdxMemData;
    mtabPrintCustID: TStringField;
    mtabPrintName: TStringField;
    mtabPrintAddress: TStringField;
    mtabPrintItem: TStringField;
    mtabPrintUnits: TStringField;
    mtabPrintPrice: TCurrencyField;
    mtabPrintAmont: TCurrencyField;
    mtabPrintBigamont: TStringField;
    mtabPrintUsername: TStringField;
    mtabPrintCollector: TStringField;
    RMReport: TRMReport;
    RMDataSet: TRMDBDataSet;
    mtabPrintPaydate: TDateField;
    mtabPrintCompany: TStringField;
    AqryMonthChargeReport: TADOQuery;
    RMDesigner: TRMDesigner;
    FormReport: TRMFormReport;
    dsmPrint: TDataSource;
    mtabPrintDescription: TStringField;
    AqryPrintItem: TStringField;
    AqryPrintUnits: TStringField;
    AtabWaterfeeCurrQty: TFloatField;
    AtabWaterfeePriorQty: TFloatField;
    AtabWaterfeeDerate: TFloatField;
    AtabWaterfeeQuantity: TFloatField;
    AtabWaterfeeWaterfee: TBCDField;
    AqryPrintCurrQty: TFloatField;
    AqryPrintPriorQty: TFloatField;
    AqryPrintDerate: TFloatField;
    AqryPrintQuantity: TFloatField;
    AqryPrintWaterfee: TBCDField;
    mtabPrintQty: TFloatField;
    AqryPaiedWaterfee: TADOQuery;
    dsPaiedWaterfee: TDataSource;
    AqryPaiedWaterfeeWRID: TAutoIncField;
    AqryPaiedWaterfeeCustID: TWideStringField;
    AqryPaiedWaterfeeName: TWideStringField;
    AqryPaiedWaterfeeAddress: TWideStringField;
    AqryPaiedWaterfeeQuantity: TFloatField;
    AqryPaiedWaterfeesPrice: TBCDField;
    AqryPaiedWaterfeeWaterfee: TBCDField;
    AqryPaiedWaterfeePayflag: TBooleanField;
    AqryPaiedWaterfeePayment: TBCDField;
    AqryPaiedWaterfeePaydate: TDateTimeField;
    AqryPaiedWaterfeeInvoice: TWideStringField;
    procedure DataModuleCreate(Sender: TObject);
    procedure AtabWaterfeeCalcFields(DataSet: TDataSet);
    procedure AtabCustomerCalcFields(DataSet: TDataSet);
    procedure AqryPrintCalcFields(DataSet: TDataSet);
    procedure AtabTownBeforePost(DataSet: TDataSet);
    procedure AqryMonthChargeReportCalcFields(DataSet: TDataSet);
    procedure RMReportGetValue(const ParName: String;
      var ParValue: Variant);
  private
  public
    procedure OpenCodeTable;
    procedure CloseCodeTable;
    function  GetCompanyName: string;
    
    procedure ChangePassword(Aid: string; const APassword: string);
    function  ConnectDatabase: Boolean;
    function  GetUserPassword(AUserID: string; var APassword: string): Integer;

    function  GetMaxCustID: string;
    function  UpdateCustCopiesbuf(Aid: string; ACurrQty, APriorQty, ADerate: Integer): Boolean;
    function  UpdateCustDegreebuf(Aid: string; Adegreebuf: Integer): Boolean;

    // 打印发票
    function  GetUserName(Aid: string): string;
    function  ChargeWaterfee(Aid: Integer; APayflag: Boolean; APayment: Double;
      APaydate: TDateTime; ACollector, AInvoice: string): Boolean;
    procedure UpdateCustomerDegree(Aid: string);
  end;

var
  dmInvPrint: TdmInvPrint;

implementation

uses MainFrm, Dialogs, sjUtils, SJInvPrintGlobal, CustomerBrowseFrm {$IFDEF DJSR},
  InvoicePrintBrowseFrm {$ENDIF DJSR};

{$R *.dfm}

{ TdmInvPrint }

procedure TdmInvPrint.ChangePassword(Aid: string;
  const APassword: string);
// 修改用户密码
begin
  with Aqrytmp do
  begin
    Close;
    SQL.Clear;
    SQL.Add('update Users set Pwd = :Pwd, LastChangedate = :LastChangedate, ');
    SQL.Add('LoginChange = :LoginChange where UserID = :UserID');
    Parameters.ParamByName('Pwd').Value       := APassword;
    Parameters.ParamByName('LastChangedate').Value := Date;
    Parameters.ParamByName('LoginChange').Value    := True;
    Parameters.ParamByName('UserID').Value         := Aid;
    try
      ExecSQL;
    except
      //ShowMessage('您输入的空白密码,建议您的密码长度大于6位!');
      Exit;
      // Add write log file method here
    end;
  end;
end;

function TdmInvPrint.ConnectDatabase: Boolean;
// 连接数据库
const
  ConnectString = 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;Persist Security Info=False';
var
  Adatafile, Astr: string;
begin
  Adatafile := ExtractFilePath(Application.ExeName) + 'Data\DJSRInvPrint.mdb';
  Astr      := Format(ConnectString, [Adatafile]);
  if not FileExists(Adatafile) then
  begin
    ShowMessage(Format('数据库文件 %s 丢失,请系统开发商联系 。', [Adatafile]));
    Result := False;
    Exit;
  end;

  with ADOConnection do
  try
    Connected        := False;
    ConnectionString := Astr;
    Connected        := True;
  except
    Result := False;
  end;
  Result := True;
end;

procedure TdmInvPrint.DataModuleCreate(Sender: TObject);
begin
  CloseCodeTable;
  GcanConnect := ConnectDatabase;
end;

function TdmInvPrint.GetMaxCustID: string;
// 返回下一个可用的客户编号
begin
  with Aqrytmp do
  try
    Close;
    SQL.Clear;
    SQL.Add('select Max(CustID) as CustID from Customer');
    try
      Open;
    except
      Result := '00000001';
      Exit;
    end;
    if not IsEmpty then
      Result := PrefixStr('0', IntToStr(FieldByName('CustID').AsInteger + 1), 8)
    else
      Result := '00000001';
  finally
    Close;
  end;

end;

function TdmInvPrint.GetUserPassword(AUserID: string;
  var APassword: string): Integer;
// 获取用户的登录密码
begin
  with Aqrytmp do
  begin
    Close;
    SQL.Clear;
    SQL.Add('select Pwd from Users where UserID = :UserID');

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -