D10szXingjie/A01基础公司管理/U_Customer.pas

646 lines
16 KiB
ObjectPascal
Raw Normal View History

2025-06-06 10:26:48 +08:00
unit U_Customer;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, cxGraphics, cxCustomData, cxStyles, cxTL, cxMaskEdit, DB, ADODB,
cxInplaceContainer, cxDBTL, cxControls, cxTLData, ComCtrls, ToolWin, StdCtrls,
cxFilter, cxData, cxDataStorage, cxEdit, cxDBData, DBClient,
cxGridCustomTableView, cxGridTableView, cxGridDBTableView, ExtCtrls,
cxSplitter, cxGridLevel, cxClasses, cxGridCustomView, cxGrid,
cxGridCustomPopupMenu, cxGridPopupMenu, RM_Dataset, RM_System, RM_Common,
RM_Class, RM_GridReport, IdBaseComponent, IdComponent, IdTCPConnection,
IdTCPClient, IdFTP, ShellAPI, IniFiles, cxCheckBox, cxCalendar, cxButtonEdit,
cxTextEdit, cxDBLookupComboBox, ComObj, cxLookAndFeels, cxLookAndFeelPainters,
cxNavigator, U_BaseList, dxSkinsCore, dxSkinsDefaultPainters, dxDateRanges,
dxBarBuiltInMenu, cxPC, FireDAC.Stan.Intf, FireDAC.Stan.Option,
FireDAC.Stan.Param, FireDAC.Stan.Error, FireDAC.DatS, FireDAC.Phys.Intf,
FireDAC.DApt.Intf, FireDAC.Stan.Async, FireDAC.DApt, FireDAC.Comp.DataSet,
FireDAC.Comp.Client, dxScrollbarAnnotations;
type
TfrmCustomer = class(TfrmBaseList)
ToolBar1: TToolBar;
TBRafresh: TToolButton;
TBDel: TToolButton;
TBClose: TToolButton;
ADOQueryTemp: TADOQuery;
ADOQueryCmd: TADOQuery;
Panel1: TPanel;
btnFind: TToolButton;
ADOQueryMain: TADOQuery;
Label3: TLabel;
CoName: TEdit;
cxGrid1: TcxGrid;
Tv1: TcxGridDBTableView;
cxGridLevel1: TcxGridLevel;
GPM_1: TcxGridPopupMenu;
DS_1: TDataSource;
CDS_1: TClientDataSet;
btnAdd: TToolButton;
v2Column6: TcxGridDBColumn;
v2Column1: TcxGridDBColumn;
v2Column2: TcxGridDBColumn;
v2Column7: TcxGridDBColumn;
Label1: TLabel;
CoCode: TEdit;
v2Column10: TcxGridDBColumn;
btnEdit: TToolButton;
Label2: TLabel;
Salesman: TEdit;
country: TEdit;
Label4: TLabel;
v2Column15: TcxGridDBColumn;
CDS_2: TClientDataSet;
DS_2: TDataSource;
btnSaleser: TToolButton;
v2Column3: TcxGridDBColumn;
OpenDialog1: TOpenDialog;
Tv1Column3: TcxGridDBColumn;
Tv1Column4: TcxGridDBColumn;
Tv1Column2: TcxGridDBColumn;
Panel2: TPanel;
cxGrid2: TcxGrid;
Tv2: TcxGridDBTableView;
v3Column3: TcxGridDBColumn;
cxGridDBColumn1: TcxGridDBColumn;
cxGridDBColumn2: TcxGridDBColumn;
cxGridDBColumn4: TcxGridDBColumn;
cxGridDBColumn5: TcxGridDBColumn;
Tv2Column1: TcxGridDBColumn;
v3Column2: TcxGridDBColumn;
cxGridLevel2: TcxGridLevel;
cxTabControl1: TcxTabControl;
btnChk: TToolButton;
btnReChk: TToolButton;
Tv1Column1: TcxGridDBColumn;
btnTallyer: TToolButton;
Tv1Column5: TcxGridDBColumn;
Tv1Column6: TcxGridDBColumn;
ToolButton1: TToolButton;
GPM_2: TcxGridPopupMenu;
ToolButton3: TToolButton;
Tv1Column7: TcxGridDBColumn;
FDQuery1: TFDQuery;
ToolButton2: TToolButton;
ToolButton4: TToolButton;
procedure FormDestroy(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure TBCloseClick(Sender: TObject);
procedure TBDelClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure TBRafreshClick(Sender: TObject);
procedure btnFindClick(Sender: TObject);
procedure btnEditClick(Sender: TObject);
procedure btnAddClick(Sender: TObject);
procedure TBuserClick(Sender: TObject);
procedure Tv1FocusedRecordChanged(Sender: TcxCustomGridTableView; APrevFocusedRecord, AFocusedRecord: TcxCustomGridRecord; ANewItemRecordFocusingChanged: Boolean);
procedure btnSaleserClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure CoCodeKeyPress(Sender: TObject; var Key: Char);
procedure btnChkClick(Sender: TObject);
procedure btnReChkClick(Sender: TObject);
procedure cxTabControl1Change(Sender: TObject);
procedure btnTallyerClick(Sender: TObject);
procedure ToolButton1Click(Sender: TObject);
procedure ToolButton3Click(Sender: TObject);
procedure CoCodeChange(Sender: TObject);
procedure ToolButton2Click(Sender: TObject);
procedure ToolButton4Click(Sender: TObject);
private
fFlileFlag: string;
{ Private declarations }
procedure InitGrid();
procedure SetStatus();
public
FAuthority: string;
end;
var
frmCustomer: TfrmCustomer;
implementation
uses
U_DataLink, U_RTFun, U_ZDYHelp, U_CustomerInput, U_CustInput, U_UserSel,
U_AttachmentUpload, U_CustomerImport, U_wechatSel;
{$R *.dfm}
procedure TfrmCustomer.SetStatus();
begin
btnSaleser.Enabled := false; //ָ<><D6B8>
btnTallyer.Enabled := false; //ָ<><D6B8>
btnChk.Enabled := false; //<2F><><EFBFBD><EFBFBD>
btnReChk.Enabled := false; //<2F><><EFBFBD><EFBFBD>
btnAdd.Enabled := false; //<2F><><EFBFBD><EFBFBD>
btnEdit.Enabled := false; //<2F>޸<EFBFBD>
TBDel.Enabled := false; //ɾ<><C9BE>
if Trim(FAuthority) = '<27><><EFBFBD><EFBFBD>' then
begin
btnSaleser.Enabled := true;
btnTallyer.Enabled := true;
btnAdd.Enabled := true;
case cxTabControl1.TabIndex of
0:
begin
btnEdit.Enabled := true;
TBDel.Enabled := true;
btnChk.Enabled := true;
end;
1:
begin
btnEdit.Enabled := true;
btnReChk.Enabled := true;
end;
2:
begin
end;
end;
end
else
begin
btnAdd.Enabled := true;
case cxTabControl1.TabIndex of
0:
begin
btnEdit.Enabled := true;
TBDel.Enabled := true;
end;
1:
begin
end;
2:
begin
end;
end;
end;
end;
procedure TfrmCustomer.InitGrid();
var
WSql, FCoCode: string;
begin
WSql := SGetFilters(Panel1, 1, 2);
if trim(WSql) <> '' then
begin
WSql := ' and ' + trim(WSql);
end;
if not CDS_1.IsEmpty then
FCoCode := CDS_1.FieldByName('CoCode').AsString;
try
ADOQueryMain.DisableControls;
with ADOQueryMain do
begin
Filtered := False;
Close;
SQL.Clear;
sql.Add(' select * from BS_Company ');
sql.Add(' where 1=1 ' + (WSql));
sql.Add(' and CoType=''<27>ͻ<EFBFBD>'' and Valid=''Y'' ');
if Trim(FAuthority) = <><C2BC>' then
begin
sql.Add(' and ( SalesId=' + quotedstr(trim(DCode)) + ' or exists (select * from [dbo].[F_Tool_SplitString](TallyId,'','') X where X.RTValue =' + quotedstr(trim(DCode)) + '))');
end;
case cxTabControl1.TabIndex of
0:
begin
sql.Add(' and status=''0''');
end;
1:
begin
sql.Add(' and status=''1''');
end;
end;
SQL.Add(' ORDER BY CoCode ');
Open;
end;
SCreateCDS(ADOQueryMain, CDS_1);
SInitCDSData(ADOQueryMain, CDS_1);
CDS_1.Locate('CoCode', FCoCode, []);
finally
ADOQueryMain.EnableControls;
end;
// with FDQuery1 do
// begin
//
// SQL.Clear;
// sql.Add(' select * from BS_Company ');
// sql.Add(' where 1=1 ' + (WSql));
// sql.Add(' and CoType=''<27>ͻ<EFBFBD>'' and Valid=''Y'' ');
// open;
// end;
end;
procedure TfrmCustomer.FormDestroy(Sender: TObject);
begin
inherited;
frmCustomer := nil;
end;
procedure TfrmCustomer.FormClose(Sender: TObject; var Action: TCloseAction);
begin
inherited;
Action := caFree;
end;
procedure TfrmCustomer.TBCloseClick(Sender: TObject);
begin
Close;
end;
procedure TfrmCustomer.TBDelClick(Sender: TObject);
begin
if CDS_1.IsEmpty then
Exit;
if not CDS_1.Locate('SSel', true, []) then
begin
Application.MessageBox('<27><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!', '<27><>ʾ', 0);
Exit;
end;
if Application.MessageBox(<><C8B7>Ҫɾ<D2AA><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>', '<27><>ʾ', 32 + 4) <> IDYES then
Exit;
if Trim(CDS_1.fieldbyname('COID').AsString) <> '' then
begin
with ADOQueryCmd do
begin
Close;
SQL.Clear;
sql.Add('exec P_BS_Com_Del @COID=' + quotedstr(trim(CDS_1.fieldbyname('COID').AsString)));
sql.Add(',@DCode=' + quotedstr(trim(DCode)));
sql.Add(',@DName=' + quotedstr(trim(DName)));
ExecSQL;
end;
end;
CDS_1.Delete;
end;
procedure TfrmCustomer.FormShow(Sender: TObject);
begin
inherited;
fFlileFlag := UserDataFlag + 'HX';
FAuthority := self.fParameters1;
ReadCxGrid(trim(self.caption) + 'Tv1', Tv1, '<27>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD>');
ReadCxGrid(trim(self.caption) + 'Tv2', Tv2, '<27>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD>');
SetStatus();
InitGrid();
end;
procedure TfrmCustomer.TBRafreshClick(Sender: TObject);
begin
InitGrid();
end;
procedure TfrmCustomer.ToolButton1Click(Sender: TObject);
begin
WriteCxGrid(trim(self.caption) + 'Tv1', Tv1, '<27>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD>');
WriteCxGrid(trim(self.caption) + 'Tv2', Tv2, '<27>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD>');
end;
procedure TfrmCustomer.ToolButton2Click(Sender: TObject);
begin
try
frmCustomerImport := TfrmCustomerImport.Create(Application);
with frmCustomerImport do
begin
if ShowModal = 1 then
begin
self.InitGrid();
end;
end;
finally
frmCustomerImport.Free;
end;
end;
procedure TfrmCustomer.btnFindClick(Sender: TObject);
begin
if ADOQueryMain.Active then
begin
SDofilter(ADOQueryMain, SGetFilters(Panel1, 1, 2));
SCreateCDS(ADOQueryMain, CDS_1);
SInitCDSData(ADOQueryMain, CDS_1);
end;
end;
procedure TfrmCustomer.ToolButton3Click(Sender: TObject);
begin
if CDS_1.IsEmpty then
Exit;
try
frmAttachmentUpload := TfrmAttachmentUpload.Create(Application);
with frmAttachmentUpload do
begin
if (Trim(FAuthority) = <><C2BC>') or (Trim(FAuthority) = '<27><><EFBFBD><EFBFBD>') then
FEditAuthority := True;
fkeyNO := Trim(Self.CDS_1.fieldbyname('Coid').AsString);
fType := '<27>ͻ<EFBFBD>';
if ShowModal = 1 then
begin
end;
end;
finally
frmAttachmentUpload.Free;
end;
end;
procedure TfrmCustomer.ToolButton4Click(Sender: TObject);
var
FUserId: string;
begin
if CDS_2.IsEmpty then
Exit;
FUserId := Trim(Self.CDS_2.FieldByName('CcID').AsString);
try
frmwechatSel := TfrmwechatSel.Create(Self);
with frmwechatSel do
begin
// FGsName:='SW';
if ShowModal = 1 then
begin
with ADOQueryCmd do
begin
Close;
SQL.Clear;
SQL.Add(' update Bs_Company_contact set wechatid=' + QuotedStr(Trim(frmwechatSel.CDS_1.FieldByName('OPENID').AsString)));
SQL.Add(',wechat=' + QuotedStr(Trim(frmwechatSel.CDS_1.FieldByName('NICKNAME').AsString)));
SQL.Add(' where CCID=' + QuotedStr(Trim(FUserId)));
ExecSQL;
end;
Self.InitGrid();
Self.CDS_2.Locate('CCID', Trim(FUserId), []);
end;
end;
finally
frmwechatSel.Free;
end;
end;
procedure TfrmCustomer.CoCodeChange(Sender: TObject);
begin
btnFind.Click;
end;
procedure TfrmCustomer.CoCodeKeyPress(Sender: TObject; var Key: Char);
begin
if Key = #13 then
begin
InitGrid();
end;
end;
procedure TfrmCustomer.cxTabControl1Change(Sender: TObject);
begin
SetStatus();
TBRafresh.Click;
end;
procedure TfrmCustomer.btnEditClick(Sender: TObject);
begin
if CDS_1.IsEmpty then
exit;
try
frmCustInput := TfrmCustInput.Create(Application);
with frmCustInput do
begin
fFlileFlag := self.fFlileFlag;
FCOID := Trim(Self.CDS_1.fieldbyname('COID').AsString);
if ShowModal = 1 then
begin
TBRafresh.Click;
end;
end;
finally
frmCustInput.Free;
end;
end;
procedure TfrmCustomer.btnTallyerClick(Sender: TObject);
var
MTallyId, MTallyer: string;
begin
MTallyId := '';
MTallyer := '';
if not CDS_1.Locate('SSel', true, []) then
begin
Application.MessageBox('<27><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!', '<27><>ʾ', 0);
Exit;
end;
try
frmUserSel := TfrmUserSel.Create(Application);
with frmUserSel do
begin
Fdept := '<27><><EFBFBD><EFBFBD>';
FMultiple := True;
if ShowModal = 1 then
begin
while frmUserSel.CDS_1.Locate('SSel', True, []) do
begin
MTallyId := MTallyId + Trim(CDS_1.FieldByName('UserID').AsString) + ',';
MTallyer := MTallyer + Trim(CDS_1.FieldByName('UserName').AsString) + ',';
frmUserSel.CDS_1.Delete;
end;
end;
end;
finally
frmUserSel.Free;
end;
if MTallyId = '' then
Exit;
MTallyId := copy(MTallyId, 1, Length(MTallyId) - 1);
MTallyer := copy(MTallyer, 1, Length(MTallyer) - 1);
while CDS_1.Locate('SSel', True, []) do
begin
with ADOQueryCmd do
begin
Close;
SQL.Clear;
sql.Add('update BS_Company set TallyId=' + quotedstr(trim(MTallyId)));
sql.Add(' ,Tallyer=' + quotedstr(trim(MTallyer)));
sql.Add(' where COID=''' + Trim(CDS_1.fieldbyname('COID').AsString) + '''');
ExecSQL;
end;
CDS_1.Delete;
end;
InitGrid();
end;
procedure TfrmCustomer.btnChkClick(Sender: TObject);
begin
if CDS_1.IsEmpty then
exit;
if not CDS_1.Locate('SSel', true, []) then
begin
Application.MessageBox('<27><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!', '<27><>ʾ', 0);
Exit;
end;
try
with CDS_1 do
begin
DisableControls;
First;
while not eof do
begin
if fieldbyname('SSel').AsBoolean then
begin
with ADOQueryCmd do
begin
close;
sql.Clear;
sql.Add('update BS_Company SET status=''1'',Chktime=getdate(),Chker=' + quotedstr(trim(DName)));
sql.Add('where CoID=' + quotedstr(trim(CDS_1.fieldbyname('CoID').AsString)));
execsql;
end;
end;
next;
end;
First;
EnableControls;
end;
application.MessageBox('<27><><EFBFBD>˳ɹ<CBB3><C9B9><EFBFBD>', '<27><>ʾ<EFBFBD><CABE>Ϣ');
TBRafresh.Click;
except
application.MessageBox('<27><><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD>', '<27><>ʾ<EFBFBD><CABE>Ϣ', 0);
end;
end;
procedure TfrmCustomer.btnReChkClick(Sender: TObject);
begin
if CDS_1.IsEmpty then
exit;
if not CDS_1.Locate('SSel', true, []) then
begin
Application.MessageBox('<27><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!', '<27><>ʾ', 0);
Exit;
end;
try
with CDS_1 do
begin
DisableControls;
First;
while not eof do
begin
if fieldbyname('SSel').AsBoolean then
begin
with ADOQueryCmd do
begin
close;
sql.Clear;
sql.Add('update BS_Company SET status=''0'',Chktime=null,Chker=null ');
sql.Add('where CoID=' + quotedstr(trim(CDS_1.fieldbyname('CoID').AsString)));
execsql;
end;
end;
next;
end;
First;
EnableControls;
end;
application.MessageBox('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˳ɹ<CBB3><C9B9><EFBFBD>', '<27><>ʾ<EFBFBD><CABE>Ϣ');
TBRafresh.Click;
except
application.MessageBox('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD>', '<27><>ʾ<EFBFBD><CABE>Ϣ', 0);
end;
end;
procedure TfrmCustomer.btnAddClick(Sender: TObject);
begin
try
frmCustInput := TfrmCustInput.Create(Application);
with frmCustInput do
begin
FCOID := '';
fFlileFlag := self.fFlileFlag;
if ShowModal = 1 then
begin
InitGrid();
end;
end;
finally
frmCustInput.Free;
end;
end;
procedure TfrmCustomer.TBuserClick(Sender: TObject);
var
FuserName: string;
begin
end;
procedure TfrmCustomer.Tv1FocusedRecordChanged(Sender: TcxCustomGridTableView; APrevFocusedRecord, AFocusedRecord: TcxCustomGridRecord; ANewItemRecordFocusingChanged: Boolean);
begin
with ADOQueryTemp do
begin
Filtered := False;
Close;
SQL.Clear;
sql.Add(' select * from BS_Company_contact where COID=' + quotedstr(Trim(CDS_1.FieldByName('COID').AsString)));
Open;
end;
SCreateCDS(ADOQueryTemp, CDS_2);
SInitCDSData(ADOQueryTemp, CDS_2);
end;
procedure TfrmCustomer.btnSaleserClick(Sender: TObject);
var
MSaleser, MSalesId: string;
begin
try
frmUserSel := TfrmUserSel.Create(Application);
with frmUserSel do
begin
Fdept := <><D2B5>';
if ShowModal = 1 then
begin
MSalesId := Trim(CDS_1.fieldbyname('UserID').AsString);
MSaleser := Trim(CDS_1.fieldbyname('UserName').AsString);
end;
end;
finally
frmUserSel.Free;
end;
if MSalesId = '' then
Exit;
with ADOQueryCmd do
begin
Close;
SQL.Clear;
sql.Add('update BS_Company set Saleser=' + quotedstr(trim(MSaleser)));
sql.Add(' ,SalesId=' + quotedstr(trim(MSalesId)));
sql.Add(' where COID=''' + Trim(CDS_1.fieldbyname('COID').AsString) + '''');
ExecSQL;
end;
initgrid();
end;
procedure TfrmCustomer.FormCreate(Sender: TObject);
begin
inherited;
FAuthority := trim(fParameters1);
end;
end.