D7szYidui/工资管理(Wage.dll)/U_WageList.pas

571 lines
15 KiB
ObjectPascal
Raw Normal View History

2025-07-19 09:32:10 +08:00
unit U_WageList;
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, cxPC, cxDropDownEdit, Menus, cxLookAndFeels,
cxLookAndFeelPainters, cxNavigator, dxBarBuiltInMenu, DateUtils;
type
TfrmWageList = class(TForm)
ToolBar1: TToolBar;
TBRafresh: TToolButton;
TBClose: TToolButton;
ADOQueryTemp: TADOQuery;
ADOQueryCmd: TADOQuery;
Panel1: TPanel;
ToolButton2: TToolButton;
ADOQueryMain: TADOQuery;
ToolButton1: TToolButton;
RM1: TRMGridReport;
RMDB_Main: TRMDBDataSet;
cxGrid2: TcxGrid;
Tv2: TcxGridDBTableView;
cxGridLevel1: TcxGridLevel;
cxGridPopupMenu2: TcxGridPopupMenu;
DS_HZ: TDataSource;
CDS_HZ: TClientDataSet;
v2Column2: TcxGridDBColumn;
v2Column5: TcxGridDBColumn;
Label1: TLabel;
CP_Code: TEdit;
Label2: TLabel;
v2Column17: TcxGridDBColumn;
v2Column19: TcxGridDBColumn;
v2Column3: TcxGridDBColumn;
v2Column7: TcxGridDBColumn;
ToolButton6: TToolButton;
Label5: TLabel;
PopupMenu2: TPopupMenu;
ToolButton4: TToolButton;
v2Column8: TcxGridDBColumn;
N1: TMenuItem;
N2: TMenuItem;
v2Column15: TcxGridDBColumn;
v2Column16: TcxGridDBColumn;
v2Column20: TcxGridDBColumn;
v2Column21: TcxGridDBColumn;
ToolButton5: TToolButton;
YGName: TEdit;
YGType: TEdit;
v2Column1: TcxGridDBColumn;
Label3: TLabel;
ComboBox1: TComboBox;
DateTimePicker1: TDateTimePicker;
Label6: TLabel;
Button1: TButton;
Panel2: TPanel;
dtpYear: TDateTimePicker;
Label7: TLabel;
cxTabControl1: TcxTabControl;
v2Column4: TcxGridDBColumn;
Label4: TLabel;
Edit1: TEdit;
Button3: TButton;
Tv2Column1: TcxGridDBColumn;
Label8: TLabel;
isSJ: TComboBox;
Tv2Column2: TcxGridDBColumn;
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 C_CodeNameChange(Sender: TObject);
procedure ToolButton1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure v2Column4PropertiesEditValueChanged(Sender: TObject);
procedure v2Column7PropertiesEditValueChanged(Sender: TObject);
procedure ToolButton6Click(Sender: TObject);
procedure v2Column19PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
procedure N1Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure ToolButton4Click(Sender: TObject);
procedure ToolButton5Click(Sender: TObject);
procedure v2Column5PropertiesEditValueChanged(Sender: TObject);
procedure cxTabControl1Change(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure DateTimePicker1Change(Sender: TObject);
private
canshu1: string;
procedure InitGrid();
function SaveData(): Boolean;
{ Private declarations }
public
fkhType: string;
Fmanage: string;
end;
var
frmWageList: TfrmWageList;
implementation
uses
U_DataLink, U_Fun, U_ZDYHelp, U_WageListInput, U_InspectionInfo, U_WorkDetail,
U_JTList;
{$R *.dfm}
function TfrmWageList.SaveData(): Boolean;
var
maxId, CRID, FXHNOPZ, FXHNO: string;
begin
Result := False;
try
if Trim(CDS_HZ.fieldbyname('GZID').AsString) = '' then
begin
if GetLSNo(ADOQueryCmd, maxId, 'GZ', 'DCGMoney', 4, 1) = False then
begin
Application.MessageBox(<><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD>', '<27><>ʾ', 0);
Exit;
end;
end
else
begin
maxId := Trim(CDS_HZ.fieldbyname('GZID').AsString);
end;
with ADOQueryCmd do
begin
Close;
sql.Clear;
sql.Add('select * from DCGMoney where GZID=' + Quotedstr(Trim(maxId)));
Open;
end;
with ADOQueryCmd do
begin
if Trim(CDS_HZ.fieldbyname('GZID').AsString) = '' then
begin
Append;
FieldByName('GZID').Value := maxId;
FieldByName('Filler').Value := Trim(DName);
FieldByName('FillTime').Value := SGetServerDateTime(ADOQueryTemp);
end
else
begin
Edit;
FieldByName('Editer').Value := Trim(DName);
FieldByName('EditTime').Value := SGetServerDateTime(ADOQueryTemp);
end;
RTSetSaveDataCDS(ADOQueryCmd, Tv2, CDS_HZ, 'DCGMoney', 0);
Post;
end;
with CDS_HZ do
begin
Edit;
FieldByName('GZID').Value := Trim(maxId);
Post;
end;
Result := True;
except
Result := Result;
end;
end;
procedure TfrmWageList.InitGrid();
begin
try
ADOQueryMain.DisableControls;
with ADOQueryMain do
begin
Filtered := False;
Close;
SQL.Clear;
sql.Add(' select * from DCGMoney ');
if cxTabControl1.TabIndex = 12 then
begin
sql.Add(' where year(GZDate)= ' + quotedstr(trim(FormatDateTime('yyyy', dtpYear.DateTime))));
DateTimePicker1.DateTime := dtpYear.DateTime;
end
else
begin
if cxTabControl1.TabIndex < 9 then
begin
sql.Add(' where GZDate= ' + quotedstr(trim(FormatDateTime('yyyy-', dtpYear.DateTime)) + '0' + inttostr(cxTabControl1.TabIndex + 1)));
DateTimePicker1.DateTime := StrToDate(trim(FormatDateTime('yyyy-', dtpYear.DateTime)) + '0' + inttostr(cxTabControl1.TabIndex + 1) + '-01');
end
else
begin
sql.Add(' where GZDate= ' + quotedstr(trim(FormatDateTime('yyyy-', dtpYear.DateTime)) + inttostr(cxTabControl1.TabIndex + 1)));
DateTimePicker1.DateTime := StrToDate(trim(FormatDateTime('yyyy-', dtpYear.DateTime)) + inttostr(cxTabControl1.TabIndex + 1) + '-01');
end;
end;
// sql.Add(' and isnull(GZType,''<27><>Ʒ'') <>''Ա<><D4B1>'' ');
// ShowMessage(SQL.Text);
// sql.Add(' where GZDate>= ' + quotedstr(trim(FormatDateTime('yyyy-MM-dd', Begdate.DateTime))));
// sql.Add(' and GZDate<' + quotedstr(trim(FormatDateTime('yyyy-MM-dd', enddate.DateTime + 1))));
Open;
end;
SCreateCDS20(ADOQueryMain, CDS_HZ);
SInitCDSData20(ADOQueryMain, CDS_HZ);
CDS_HZ.Last;
finally
ADOQueryMain.EnableControls;
end;
end;
procedure TfrmWageList.FormDestroy(Sender: TObject);
begin
frmWageList := nil;
end;
procedure TfrmWageList.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree;
end;
procedure TfrmWageList.TBCloseClick(Sender: TObject);
begin
WriteCxGrid('<27>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD>FM2', Tv2, '<27>ͻ<EFBFBD><CDBB>Զ<EFBFBD><D4B6><EFBFBD>');
Close;
end;
procedure TfrmWageList.FormShow(Sender: TObject);
begin
ReadCxGrid('<27>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD>FM2', Tv2, '<27>ͻ<EFBFBD><CDBB>Զ<EFBFBD><D4B6><EFBFBD>');
InitGrid();
end;
procedure TfrmWageList.TBRafreshClick(Sender: TObject);
begin
InitGrid();
end;
procedure TfrmWageList.ToolButton2Click(Sender: TObject);
begin
if ADOQueryMain.Active then
begin
SDofilter(ADOQueryMain, SGetFilters(Panel1, 1, 2));
SCreateCDS20(ADOQueryMain, CDS_HZ);
SInitCDSData20(ADOQueryMain, CDS_HZ);
end;
end;
procedure TfrmWageList.C_CodeNameChange(Sender: TObject);
begin
ToolButton2.Click;
end;
procedure TfrmWageList.ToolButton1Click(Sender: TObject);
begin
if ADOQueryMain.IsEmpty then
Exit;
TcxGridToExcel(self.Caption, cxgrid2);
// SelExportData(Tv2,ADOQueryMain,'<27>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>');
end;
procedure TfrmWageList.FormCreate(Sender: TObject);
begin
dtpYear.DateTime := SGetServerDate10(ADOQueryTemp);
DateTimePicker1.DateTime := SGetServerDate10(ADOQueryTemp);
canshu1 := Trim(DParameters1);
end;
procedure TfrmWageList.v2Column4PropertiesEditValueChanged(Sender: TObject);
var
FFieldName, mvalue: string;
begin
mvalue := TcxTextEdit(Sender).EditingText;
FFieldName := Trim(Tv2.Controller.FocusedColumn.DataBinding.FilterFieldName);
with CDS_HZ do
begin
Edit;
FieldByName(FFieldName).Value := mvalue;
Post;
end;
with ADOQueryCmd do
begin
Close;
sql.Clear;
sql.Add('update DCGMoney set GZMoney=' + mvalue);
sql.Add(' where GZID=' + trim(Self.CDS_HZ.FieldByName('GZID').AsString));
EXECSQL;
end;
tv2.Controller.EditingController.ShowEdit();
end;
procedure TfrmWageList.v2Column7PropertiesEditValueChanged(Sender: TObject);
var
FFieldName, mvalue: string;
begin
mvalue := TcxTextEdit(Sender).EditingText;
FFieldName := Trim(Tv2.Controller.FocusedColumn.DataBinding.FilterFieldName);
with CDS_HZ do
begin
Edit;
FieldByName(FFieldName).Value := mvalue;
Post;
end;
with ADOQueryCmd do
begin
Close;
sql.Clear;
sql.Add('update DCGMoney set ' + FFieldName + '=' + QuotedStr(Trim(mvalue)));
sql.Add(' where GZID=' + trim(Self.CDS_HZ.FieldByName('GZID').AsString));
EXECSQL;
end;
tv2.Controller.EditingController.ShowEdit();
end;
procedure TfrmWageList.ToolButton6Click(Sender: TObject);
begin
with Self.CDS_HZ do
begin
Append;
FieldByName('GZDate').Value := SGetServerDate(ADOQueryTemp);
Post;
end;
end;
procedure TfrmWageList.v2Column19PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
begin
try
frmZDYHelp := TfrmZDYHelp.Create(Application);
with frmZDYHelp do
begin
flag := 'SCPerson';
flagname := '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>';
fnote := True;
V1Name.Caption := '<27><><EFBFBD><EFBFBD>';
V1Note.Caption := '<27><><EFBFBD><EFBFBD>';
// V1Note1.Caption := '<27><><EFBFBD><EFBFBD>';
// fnote1 := True;
TBAdd.Visible := False;
TBDel.Visible := False;
TBEdit.Visible := False;
TBSave.Visible := False;
if ShowModal = 1 then
begin
with CDS_HZ do
begin
Edit;
FieldByName('DName').Value := Trim(ClientDataSet1.FieldByName('ZDYName').AsString);
Post;
end;
with ADOQueryCmd do
begin
Close;
sql.Clear;
sql.Add('update DCGMoney set DName=' + QuotedStr(Trim(ClientDataSet1.FieldByName('ZDYName').AsString)));
sql.Add(' where GZID=' + trim(Self.CDS_HZ.FieldByName('GZID').AsString));
EXECSQL;
end;
tv2.Controller.EditingController.ShowEdit();
end;
end;
finally
frmZDYHelp.free;
end;
end;
procedure TfrmWageList.N1Click(Sender: TObject);
begin
SelOKNo(CDS_HZ, True);
end;
procedure TfrmWageList.N2Click(Sender: TObject);
begin
SelOKNo(CDS_HZ, false);
end;
procedure TfrmWageList.ToolButton4Click(Sender: TObject);
begin
try
CDS_HZ.DisableControls;
ADOQueryCmd.Connection.BeginTrans;
with CDS_HZ do
begin
while CDS_HZ.Locate('SSel', True, []) do
begin
if Trim(CDS_HZ.fieldbyname('GZID').AsString) <> '' then
begin
with Self.ADOQueryCmd do
begin
Close;
sql.Clear;
sql.Add('delete DCGMoney where GZID=' + quotedstr(Trim(CDS_HZ.fieldbyname('GZID').AsString)));
ExecSQL;
end;
end;
CDS_HZ.Delete;
end;
end;
ADOQueryCmd.Connection.CommitTrans;
CDS_HZ.EnableControls;
except
ADOQueryCmd.Connection.RollbackTrans;
CDS_HZ.EnableControls;
application.MessageBox('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD>', '<27><>ʾ<EFBFBD><CABE>Ϣ', 0);
end;
end;
procedure TfrmWageList.ToolButton5Click(Sender: TObject);
begin
if CDS_HZ.IsEmpty then
Exit;
ToolBar1.SetFocus;
if not CDS_HZ.Locate('SSel', True, []) then
begin
Application.MessageBox('<27><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!', '<27><>ʾ', 0);
Exit;
end;
try
ADOQueryCmd.Connection.BeginTrans;
CDS_HZ.DisableControls;
with CDS_HZ do
begin
while CDS_HZ.Locate('SSel', True, []) do
begin
if not SaveData() then
begin
CDS_HZ.EnableControls;
ADOQueryCmd.Connection.RollbackTrans;
Application.MessageBox('<27><><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>!', '<27><>ʾ', 0);
Exit;
end;
with CDS_HZ do
begin
Edit;
FieldByName('SSel').Value := False;
Post;
end;
Next;
end;
end;
CDS_HZ.EnableControls;
ADOQueryCmd.Connection.CommitTrans;
Application.MessageBox('<27><><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD>!', '<27><>ʾ', 0);
except
CDS_HZ.EnableControls;
ADOQueryCmd.Connection.RollbackTrans;
Application.MessageBox('<27><><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>!', '<27><>ʾ', 0);
end;
end;
procedure TfrmWageList.v2Column5PropertiesEditValueChanged(Sender: TObject);
var
mvalue, FFieldName: string;
FGZQty, FGZPrice, FCLMoney, FJLMoney, FCFMoney, FGZMoney: Double;
begin
mvalue := TcxTextEdit(Sender).EditingText;
FFieldName := Trim(Tv2.Controller.FocusedColumn.DataBinding.FilterFieldName);
with CDS_HZ do
begin
Edit;
FieldByName(FFieldName).Value := Trim(mvalue);
Post;
FGZQty := CDS_HZ.fieldbyname('GZQty').AsFloat;
FGZPrice := CDS_HZ.fieldbyname('GZPrice').AsFloat;
FJLMoney := CDS_HZ.fieldbyname('JLMoney').AsFloat;
FCFMoney := CDS_HZ.fieldbyname('CFMoney').AsFloat;
FCLMoney := RoundFloat(FGZQty * FGZPrice, 2);
FGZMoney := FCLMoney + FJLMoney - FCFMoney;
end;
with CDS_HZ do
begin
Edit;
FieldByName('GZMoney').Value := FGZMoney;
FieldByName('CLMoney').Value := FCLMoney;
Post;
end;
tv2.Controller.EditingController.ShowEdit();
end;
procedure TfrmWageList.cxTabControl1Change(Sender: TObject);
begin
InitGrid();
end;
procedure TfrmWageList.Button1Click(Sender: TObject);
begin
with ADOQueryMain do
begin
Filtered := False;
Close;
SQL.Clear;
sql.Add(' exec P_GZ_All ');
sql.Add(' @FGZDate= ' + quotedstr(trim(FormatDateTime('yyyy-MM', DateTimePicker1.DateTime))));
sql.Add(' ,@GZType=' + quotedstr(trim(ComboBox1.Text)));
Open;
end;
SCreateCDS20(ADOQueryMain, CDS_HZ);
SInitCDSData20(ADOQueryMain, CDS_HZ);
end;
procedure TfrmWageList.Button3Click(Sender: TObject);
var
mvalue, FFieldName: string;
FGZQty, FGZPrice, FCLMoney, FJLMoney, FCFMoney, FGZMoney: Double;
begin
FGZPrice := StrToFloatDef(Edit1.Text, 0);
with CDS_HZ do
begin
First;
while not Eof do
begin
if CDS_HZ.fieldbyname('SSel').AsBoolean then
begin
FGZQty := CDS_HZ.fieldbyname('GZQty').AsFloat;
FJLMoney := CDS_HZ.fieldbyname('JLMoney').AsFloat;
FCFMoney := CDS_HZ.fieldbyname('CFMoney').AsFloat;
FCLMoney := RoundFloat(FGZQty * FGZPrice, 2);
FGZMoney := FCLMoney + FJLMoney - FCFMoney;
with CDS_HZ do
begin
Edit;
FieldByName('GZPrice').Value := FGZPrice;
FieldByName('GZMoney').Value := FGZMoney;
FieldByName('CLMoney').Value := FCLMoney;
Post;
end;
end;
Next;
end;
end;
tv2.Controller.EditingController.ShowEdit();
end;
procedure TfrmWageList.DateTimePicker1Change(Sender: TObject);
begin
dtpYear.DateTime := DateTimePicker1.DateTime;
cxTabControl1.TabIndex := MonthOf(dtpYear.DateTime) - 1;
end;
end.