D10myYicheng/财务管理(Financial.dll)/U_InvoiceJX.pas
2025-05-27 14:08:09 +08:00

718 lines
18 KiB
ObjectPascal
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

unit U_InvoiceJX;
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, cxDropDownEdit, cxPC, RM_e_Xls, Menus, cxLookAndFeels,
cxLookAndFeelPainters, cxNavigator, dxBarBuiltInMenu, dxSkinsCore,
dxSkinsDefaultPainters, dxDateRanges, U_BaseList, ComObj;
type
FdDy = record
inc: integer; //客户端套接字句柄
FDdys: string[32]; //客户端套接字
FdDysName: string[32]; //客户端套接字
end;
TfrmInvoiceJX = class(TfrmBaseList)
ToolBar1: TToolBar;
TBRafresh: TToolButton;
TBClose: TToolButton;
ADOQueryTemp: TADOQuery;
ADOQueryCmd: TADOQuery;
Panel1: TPanel;
ToolButton2: TToolButton;
P_CodeName: TEdit;
ADOQueryMain: TADOQuery;
ToolButton1: TToolButton;
RM1: TRMGridReport;
RMDB_Main: TRMDBDataSet;
Label3: TLabel;
IVNo: TEdit;
cxGrid1: TcxGrid;
Tv1: TcxGridDBTableView;
cxGridLevel1: TcxGridLevel;
Label2: TLabel;
Label6: TLabel;
begdate: TDateTimePicker;
Enddate: TDateTimePicker;
cxGridPopupMenu2: TcxGridPopupMenu;
DS_Invoice: TDataSource;
CDS_Invoice: TClientDataSet;
TADD: TToolButton;
TUPDATE: TToolButton;
TBDEL: TToolButton;
v1InvoiceNo: TcxGridDBColumn;
v1InvoiceType: TcxGridDBColumn;
v1InvoiceDate: TcxGridDBColumn;
v1FactoryName: TcxGridDBColumn;
v1note: TcxGridDBColumn;
P_Spec: TEdit;
Label5: TLabel;
FactoryName: TEdit;
TCHK: TToolButton;
TNOCHK: TToolButton;
cxTabControl1: TcxTabControl;
TSel: TToolButton;
v1Column1: TcxGridDBColumn;
v1Column2: TcxGridDBColumn;
RMXLSExport1: TRMXLSExport;
PopupMenu1: TPopupMenu;
N1: TMenuItem;
N2: TMenuItem;
ToolButton4: TToolButton;
v1Column3: TcxGridDBColumn;
ADOQueryPrint: TADOQuery;
Label7: TLabel;
KPFactoryName: TEdit;
Label8: TLabel;
Label9: TLabel;
Label1: TLabel;
SYRName: TEdit;
v1Column8: TcxGridDBColumn;
v1Column9: TcxGridDBColumn;
v1Column10: TcxGridDBColumn;
v1Column11: TcxGridDBColumn;
v1Column12: TcxGridDBColumn;
v1Column13: TcxGridDBColumn;
v1Column14: TcxGridDBColumn;
v1Column15: TcxGridDBColumn;
v1Column17: TcxGridDBColumn;
v1Column18: TcxGridDBColumn;
v1Column19: TcxGridDBColumn;
Tv1Column1: TcxGridDBColumn;
VC_TSNOTE: TcxGridDBColumn;
chkTS: TCheckBox;
ToolButton3: TToolButton;
ToolButton5: TToolButton;
Tv1Column2: TcxGridDBColumn;
Tv1Column3: TcxGridDBColumn;
Tv1Column4: TcxGridDBColumn;
ToolButton6: TToolButton;
Tv1Column5: TcxGridDBColumn;
Tv1Column6: TcxGridDBColumn;
Tv1Column7: TcxGridDBColumn;
Tv1Column8: TcxGridDBColumn;
Tv1Column9: TcxGridDBColumn;
Tv1Column10: TcxGridDBColumn;
Tv1Column11: TcxGridDBColumn;
Tv1Column12: TcxGridDBColumn;
ToolButton7: TToolButton;
OpenDialog1: TOpenDialog;
Panel2: TPanel;
procedure FormDestroy(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure TBCloseClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure TBRafreshClick(Sender: TObject);
procedure ToolButton2Click(Sender: TObject);
procedure ToolButton1Click(Sender: TObject);
procedure IVNoChange(Sender: TObject);
procedure TADDClick(Sender: TObject);
procedure TUPDATEClick(Sender: TObject);
procedure TBDELClick(Sender: TObject);
procedure cxTabControl1Change(Sender: TObject);
procedure TCHKClick(Sender: TObject);
procedure TNOCHKClick(Sender: TObject);
procedure TSelClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure N1Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure ToolButton4Click(Sender: TObject);
procedure Tv1CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
procedure chkTSClick(Sender: TObject);
procedure ToolButton3Click(Sender: TObject);
procedure ToolButton5Click(Sender: TObject);
procedure ToolButton6Click(Sender: TObject);
procedure ToolButton7Click(Sender: TObject);
private
{ Private declarations }
procedure InitGrid();
procedure SetStatus();
public
canshu1, canshu2, FZKType: string;
dFdDy: array[0..20] of FdDy; //客户端连接数组
{ Public declarations }
end;
//var
// frmInvoiceJX: TfrmInvoiceJX;
implementation
uses
U_DataLink, U_RTFun, U_ZDYHelp, U_InvoiceJXInPut, U_JXFPHx, U_JXFPHXList,
U_FjList10;
{$R *.dfm}
procedure TfrmInvoiceJX.SetStatus();
begin
tchk.Visible := false;
tnochk.Visible := false;
TUPDATE.Visible := false;
tbdel.Visible := false;
if trim(DParameters1) <> '高权限' then
begin
case cxTabControl1.TabIndex of
0:
begin
TUPDATE.Visible := true;
tbdel.Visible := true;
TCHK.Visible := true;
end;
1:
begin
tnochk.Visible := true;
end;
2:
begin
end;
end;
end
else
begin
case cxTabControl1.TabIndex of
0:
begin
tchk.Visible := true;
TUPDATE.Visible := true;
tbdel.Visible := true;
TCHK.Visible := true;
end;
1:
begin
tnochk.Visible := true;
end;
2:
begin
end;
end;
end;
end;
procedure TfrmInvoiceJX.InitGrid();
begin
try
with ADOQueryMain do
begin
Close;
SQL.Clear;
sql.Add(' select A.* ,WFPhxNum=taxMoney-ISNULL(FPhxNum,0) ');
SQL.Add(',isfj=CAST((CASE WHEN (SELECT COUNT(*) FROM TP_FILE D WHERE D.WBID=A.ivNo )>0 THEN 1 ELSE 0 END )AS BIT)');
SQL.Add(' ,B.TSNOTE ');
sql.Add(' from CW_Invoice A left join SalesContract_Main B on A.ConNo =B.ConNo ');
sql.add(' where A.IVDate>=''' + formatdatetime('yyyy-MM-dd', begdate.datetime) + ''' ');
sql.Add(' and A.IVDate<''' + formatdateTime('yyyy-MM-dd', enddate.DateTime + 1) + ''' ');
sql.Add(' and IVFlag=''进项'' ');
// sql.Add(' and ZKType= ' + quotedstr(Trim(FZKType)));
if cxTabControl1.TabIndex = 0 then
sql.add(' and isnull(A.Chkstatus,''0'')=''0''');
if cxTabControl1.TabIndex = 1 then
sql.add(' and A.Chkstatus=''1''');
if chkTS.Checked then
begin
sql.Add(' and ISNULL(B.TSNOTE,'''')<>'''' ');
end;
Open;
// ShowMessage(SQL.Text);
end;
SCreateCDS(ADOQueryMain, CDS_Invoice);
SInitCDSData(ADOQueryMain, CDS_Invoice);
finally
end;
end;
procedure TfrmInvoiceJX.FormDestroy(Sender: TObject);
begin
inherited;
// frmInvoiceJX := nil;
end;
procedure TfrmInvoiceJX.FormClose(Sender: TObject; var Action: TCloseAction);
begin
inherited;
Action := caFree;
end;
procedure TfrmInvoiceJX.TBCloseClick(Sender: TObject);
begin
WriteCxGrid('发票管理', Tv1, '财务管理');
Close;
end;
procedure TfrmInvoiceJX.FormShow(Sender: TObject);
begin
inherited;
ReadCxGrid('发票管理', Tv1, '财务管理');
Enddate.DateTime := SGetServerDate(ADOQueryTemp);
begdate.DateTime := Enddate.DateTime - 30;
SetStatus();
InitGrid();
end;
procedure TfrmInvoiceJX.TBRafreshClick(Sender: TObject);
begin
begdate.SetFocus;
InitGrid();
end;
procedure TfrmInvoiceJX.ToolButton2Click(Sender: TObject);
begin
if ADOQueryMain.Active then
begin
SDofilter(ADOQueryMain, SGetFilters(Panel1, 1, 2));
SCreateCDS(ADOQueryMain, CDS_Invoice);
SInitCDSData(ADOQueryMain, CDS_Invoice);
end;
end;
procedure TfrmInvoiceJX.ToolButton3Click(Sender: TObject);
begin
if CDS_Invoice.IsEmpty then
exit;
frmJXFPHx := TfrmJXFPHx.create(self);
with frmJXFPHx do
begin
fkeyNo := CDS_Invoice.fieldbyname('IVId').AsString;
ffactoryNO := CDS_Invoice.fieldbyname('factoryNo').AsString;
if showmodal = 1 then
begin
end;
free;
end;
end;
procedure TfrmInvoiceJX.ToolButton1Click(Sender: TObject);
begin
if ADOQueryMain.IsEmpty then
Exit;
TcxGridToExcel(self.Caption, cxgrid1);
end;
procedure TfrmInvoiceJX.IVNoChange(Sender: TObject);
begin
ToolButton2.Click;
end;
procedure TfrmInvoiceJX.TADDClick(Sender: TObject);
begin
frmInvoiceJXInPut := TfrmInvoiceJXInPut.Create(self);
with frmInvoiceJXInPut do
begin
FIVNo := '';
FZKType := Self.FZKType;
if showmodal = 1 then
begin
initGrid();
end;
free;
end;
end;
procedure TfrmInvoiceJX.TUPDATEClick(Sender: TObject);
begin
frmInvoiceJXInPut := TfrmInvoiceJXInPut.Create(self);
with frmInvoiceJXInPut do
begin
IvNo.Enabled := False;
FIVNo := trim(Self.CDS_Invoice.fieldbyname('IVNo').asstring);
FZKType := Self.FZKType;
if showmodal = 1 then
begin
Self.initGrid();
end;
free;
end;
end;
procedure TfrmInvoiceJX.TBDELClick(Sender: TObject);
begin
if CDS_Invoice.IsEmpty then
exit;
if application.MessageBox('确定要删除发票吗?', '提示', 1) = 2 then
exit;
try
ADOQueryCmd.Connection.BeginTrans;
with ADOQueryCmd do
begin
close;
sql.Clear;
sql.add('delete from CW_Invoice where IVNo=''' + trim(CDS_Invoice.fieldbyname('ivNo').asstring) + ''' ');
sql.Add('insert into SY_SysLog(operor,opertime,Model,acction,opevent,result) values( ');
sql.Add(' ' + quotedstr(trim(DName)));
sql.Add(',getdate() ');
sql.Add(',' + quotedstr(trim(self.Caption)));
sql.Add(',' + quotedstr(trim('进项发票删除')));
sql.Add(',' + quotedstr(trim('发票号:' + trim(CDS_Invoice.FieldByName('ivNo').AsString))));
sql.Add(',' + quotedstr(trim('成功')));
sql.Add(')');
execsql;
end;
ADOQueryCmd.Connection.CommitTrans;
CDS_Invoice.Delete;
except
ADOQueryCmd.Connection.RollbackTrans;
end;
end;
procedure TfrmInvoiceJX.cxTabControl1Change(Sender: TObject);
begin
SetStatus();
initGrid();
end;
procedure TfrmInvoiceJX.TCHKClick(Sender: TObject);
begin
if CDS_Invoice.IsEmpty then
exit;
try
with ADOQueryCmd do
begin
close;
sql.Clear;
sql.add('update CW_Invoice set Chker=''' + trim(DName) + ''',Chktime=getdate(),chkstatus=''1'' ');
sql.add('where IVNo=''' + trim(CDS_Invoice.fieldbyname('ivNo').asstring) + ''' ');
sql.add('EXEC P_CW_SC_FP @DataID=''' + trim(CDS_Invoice.fieldbyname('ivNo').asstring) + ''' ');
execsql;
end;
application.MessageBox('审核成功', '提示');
CDS_Invoice.delete;
except
;
application.MessageBox('审核失败', '提示');
end;
end;
procedure TfrmInvoiceJX.TNOCHKClick(Sender: TObject);
begin
if CDS_Invoice.IsEmpty then
exit;
try
with ADOQueryCmd do
begin
close;
sql.Clear;
sql.add('update CW_Invoice set Chker=null,Chktime=null,chkstatus=''0'' ');
sql.add('where IVNo=''' + trim(CDS_Invoice.fieldbyname('iVNo').asstring) + ''' ');
sql.add('EXEC P_CW_SC_FP @DataID=''' + trim(CDS_Invoice.fieldbyname('ivNo').asstring) + ''' ');
execsql;
end;
application.MessageBox('撤销成功', '提示');
CDS_Invoice.delete;
except
application.MessageBox('撤销失败', '提示');
end;
end;
procedure TfrmInvoiceJX.TSelClick(Sender: TObject);
begin
frmInvoiceJXInPut := TfrmInvoiceJXInPut.Create(self);
with frmInvoiceJXInPut do
begin
TSave.Visible := False;
ToolButton1.Visible := False;
ToolButton2.Visible := False;
FIvNo := trim(Self.CDS_Invoice.fieldbyname('IVNo').asstring);
if showmodal = 1 then
begin
end;
end;
end;
procedure TfrmInvoiceJX.FormCreate(Sender: TObject);
begin
inherited;
canshu1 := trim(DParameters1);
end;
procedure TfrmInvoiceJX.N1Click(Sender: TObject);
begin
CDS_Invoice.DisableControls;
while CDS_Invoice.Locate('SSel', False, []) do
begin
CDS_Invoice.Edit;
CDS_Invoice.FieldByName('SSel').Value := True;
CDS_Invoice.Post;
end;
CDS_Invoice.EnableControls
end;
procedure TfrmInvoiceJX.N2Click(Sender: TObject);
begin
CDS_Invoice.DisableControls;
while CDS_Invoice.Locate('SSel', False, []) do
begin
CDS_Invoice.Edit;
CDS_Invoice.FieldByName('SSel').Value := True;
CDS_Invoice.Post;
end;
CDS_Invoice.EnableControls
end;
procedure TfrmInvoiceJX.ToolButton4Click(Sender: TObject);
var
fPrintFile: string;
Porderno, LBName, SYRName: string;
i, j: Integer;
OrderKg: Double;
begin
if CDS_Invoice.IsEmpty then
Exit;
if CDS_Invoice.Locate('SSel', True, []) = False then
begin
Application.MessageBox('没有选择数据', '提示', 0);
Exit;
end;
with ADOQueryCmd do
begin
Close;
sql.Clear;
sql.Add('delete TBSubID where DName=''' + Trim(DCode) + '''');
ExecSQL;
end;
with ADOQueryCmd do
begin
Close;
sql.Clear;
sql.Add('SELECT * FROM TBSubID where 1=2 ');
open;
end;
CDS_Invoice.DisableControls;
try
ADOQueryCmd.Connection.BeginTrans;
with CDS_Invoice do
begin
First;
while not Eof do
begin
if Fieldbyname('Ssel').AsBoolean then
begin
ADOQueryCmd.append;
ADOQueryCmd.fieldbyname('SubId').Value := Trim(CDS_Invoice.fieldbyname('InvoiceNo').AsString);
ADOQueryCmd.fieldbyname('Dname').Value := Trim(DCode);
ADOQueryCmd.post;
end;
Next;
end;
end;
ADOQueryCmd.Connection.CommitTrans;
except
ADOQueryCmd.Connection.RollbackTrans;
end;
CDS_Invoice.EnableControls;
with ADOQueryPrint do
begin
Close;
sql.Clear;
sql.Add('exec P_View_FPTJ ' + quotedstr(Trim(DCode)));
Open;
end;
ExportFtErpFile('进项发票列表.rmf', ADOQueryTemp);
fPrintFile := ExtractFilePath(Application.ExeName) + 'Report\进项发票列表.rmf';
if FileExists(fPrintFile) then
begin
RM1.LoadFromFile(fPrintFile);
// RMVariables['SYRName']:=Trim(SYRName);
RM1.ShowReport;
end
else
begin
Application.MessageBox(PChar('没有找Report\进项发票列表.rmf'), '提示', 0);
end;
end;
procedure TfrmInvoiceJX.ToolButton5Click(Sender: TObject);
begin
frmJXFPHXList := TfrmJXFPHXList.create(self);
with frmJXFPHXList do
begin
FromId.text := Self.CDS_Invoice.fieldbyname('IVID').AsString;
if showmodal = 1 then
begin
end;
free;
end;
end;
procedure TfrmInvoiceJX.ToolButton6Click(Sender: TObject);
begin
inherited;
if CDS_Invoice.IsEmpty then
Exit;
try
frmFjList10 := TfrmFjList10.Create(Application);
with frmFjList10 do
begin
// PState:=1;
// if Trim(canshu1)<>'高权限' then cxButton1.Visible:=false;
fkeyNO := Trim(Self.CDS_Invoice.fieldbyname('IVNo').AsString);
fType := '进项发票';
if ShowModal = 1 then
begin
end;
end;
finally
frmFjList10.Free;
end;
end;
procedure TfrmInvoiceJX.ToolButton7Click(Sender: TObject);
var
excelApp, WorkBook: Variant;
i, j, k, LX, ExcelRowCount: integer;
maxId, FCPID, FCPName, MAXNO, t1, t2, t3, MBZType: string;
begin
try
excelApp := CreateOleObject('Excel.Application');
openDialog1.Filter := '*.CSV;*.xls';
if opendialog1.Execute then
begin
WorkBook := excelApp.WorkBooks.Open(OpenDialog1.FileName);
end
else
exit;
excelApp.Visible := false;
ExcelRowCount := WorkBook.WorkSheets[1].UsedRange.Rows.Count;
except
application.MessageBox('加载EXCEL错误', '错误信息', MB_ICONERROR);
exit;
end;
try
k := 0;
for i := 1 to 50 do
begin
if trim(excelApp.Cells[1, i].value) = '' then
continue;
//遍历界面绑定界面中显示的字段和名称
for j := 0 to Tv1.ColumnCount - 1 do
begin
if trim(excelApp.Cells[1, i].value) = trim(Tv1.Columns[j].Caption) then
begin
dFdDy[k].inc := i;
dFdDy[k].FDdys := trim(Tv1.Columns[j].DataBinding.FieldName);
dFdDy[k].FdDysName := trim(Tv1.Columns[j].Caption);
end;
end;
k := k + 1;
end;
except
application.MessageBox('加载数组错误!', '错误信息', MB_ICONERROR);
exit;
end;
ADOQueryCmd.Connection.BeginTrans;
panel2.Visible := true;
try
for i := 2 to ExcelRowCount do
begin
with ADOQueryCmd do
begin
close;
sql.Clear;
sql.Add('select * from CW_Invoice where 1=2');
open;
end;
with ADOQueryCmd do
begin
ADOQueryCmd.Append;
if GetLSNo(ADOQueryTemp, MAXNO, 'IJDR', 'CW_Invoice', 4, 1) = False then
begin
Application.MessageBox('取最大号失败!', '提示', 0);
Exit;
end;
fieldbyname('IVID').Value := MAXNO;
fieldbyname('IVFlag').Value := '进项';
end;
for j := 0 to k - 1 do
begin
if (trim(dFdDy[j].FDdys) <> '') then
begin
ADOQueryCmd.fieldbyname(dFdDy[j].FDdys).Value := excelApp.Cells[i, dFdDy[j].inc].Value;
end;
end;
ADOQueryCmd.Post;
end;
WorkBook.Close;
excelApp.Quit;
excelApp := Unassigned;
WorkBook := Unassigned;
ADOQueryCmd.Connection.CommitTrans;
application.MessageBox('导入成功!', '提示信息');
panel2.Visible := false;
InitGrid();
except
WorkBook.Close;
excelApp.Quit;
excelApp := Unassigned;
WorkBook := Unassigned;
ADOQueryCmd.Connection.RollbackTrans;
application.MessageBox('保存数据错误!', '错误信息', MB_ICONERROR);
panel2.Visible := false;
exit;
end;
end;
procedure TfrmInvoiceJX.Tv1CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
begin
if AViewInfo.GridRecord.Values[VC_TSNOTE.Index] <> null then
begin
ACanvas.Brush.Color := StrToIntDef(AViewInfo.GridRecord.Values[VC_TSNOTE.Index], $FFFFFF);
end;
end;
procedure TfrmInvoiceJX.chkTSClick(Sender: TObject);
begin
InitGrid();
end;
end.