📄 invprintdm.pas
字号:
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 + -