D7szYidui/工资管理(Wage.dll)/U_WorkDetail.pas
DESKTOP-E401PHE\Administrator ef99fc8b5e 移交
2025-07-19 09:32:10 +08:00

494 lines
13 KiB
ObjectPascal
Raw 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_WorkDetail;
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, cxContainer, cxDropDownEdit, cxPC, Menus;
type
TfrmWorkDetail = 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;
Label3: TLabel;
C_CodeName: TEdit;
cxGridPopupMenu2: TcxGridPopupMenu;
DS_HZ: TDataSource;
CDS_HZ: TClientDataSet;
Label1: TLabel;
C_Code: TEdit;
Label2: TLabel;
Filler: TEdit;
cxGrid2: TcxGrid;
Tv2: TcxGridDBTableView;
v2Column19: TcxGridDBColumn;
v2Column12: TcxGridDBColumn;
v2Column15: TcxGridDBColumn;
v2Column10: TcxGridDBColumn;
v2Column11: TcxGridDBColumn;
cxgrdDownQty: TcxGridDBColumn;
v2Column2: TcxGridDBColumn;
cxgrdWzPrice: TcxGridDBColumn;
v2Column14: TcxGridDBColumn;
v2Column5: TcxGridDBColumn;
v2Column1: TcxGridDBColumn;
v2Column8: TcxGridDBColumn;
v2Column9: TcxGridDBColumn;
v2Column17: TcxGridDBColumn;
cxGridLevel1: TcxGridLevel;
Label5: TLabel;
Label6: TLabel;
BegDate: TcxDateEdit;
EndDate: TcxDateEdit;
v2Column3: TcxGridDBColumn;
Label4: TLabel;
Label7: TLabel;
Label8: TLabel;
APID: TEdit;
CarNo: TEdit;
ConNo: TEdit;
cxStyleRepository1: TcxStyleRepository;
cxStyle1: TcxStyle;
v2Column4: TcxGridDBColumn;
v2Column7: TcxGridDBColumn;
cxTabControl1: TcxTabControl;
tbOK: TToolButton;
v2Column13: TcxGridDBColumn;
PopupMenu2: TPopupMenu;
MenuItem1: TMenuItem;
N1: TMenuItem;
v2Column16: TcxGridDBColumn;
ToolButton4: TToolButton;
tbDel: TToolButton;
tbDelCX: TToolButton;
v2Column6: TcxGridDBColumn;
v2Column18: 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 MenuItem1Click(Sender: TObject);
procedure N1Click(Sender: TObject);
procedure tbOKClick(Sender: TObject);
procedure cxgrdDownQtyPropertiesEditValueChanged(Sender: TObject);
procedure cxTabControl1Change(Sender: TObject);
procedure ToolButton4Click(Sender: TObject);
procedure Tv2DblClick(Sender: TObject);
procedure tbDelClick(Sender: TObject);
procedure tbDelCXClick(Sender: TObject);
private
{ Private declarations }
canshu1: string;
procedure InitGrid();
procedure SetStatus();
public
FGZID, FEnddate, FMainId, FSubId, FDName, FCarNo: string;
end;
var
frmWorkDetail: TfrmWorkDetail;
implementation
uses
U_DataLink, U_Fun, U_ZDYHelp, U_WageListInput, U_SysLogHelp, U_WageEdit,
U_GZHJList;
{$R *.dfm}
procedure TfrmWorkDetail.SetStatus();
begin
tbOK.Visible := False;
tbDel.Visible := False;
tbDelCX.Visible := False;
case cxTabControl1.TabIndex of
0:
begin
tbOK.Visible := True;
tbDel.Visible := True;
end;
2:
begin
tbDelCX.Visible := True;
end;
end;
end;
procedure TfrmWorkDetail.InitGrid();
begin
try
ADOQueryMain.DisableControls;
with ADOQueryMain do
begin
Filtered := False;
Close;
SQL.Clear;
sql.Add('select A.CONNO ,B.MainId,B.SubId,B.C_Code,B.C_CodeName ');
sql.Add(',MPMoney=round(((isnull(JGPrice,0)+ISNULL(CarBalance,0))*Qty/10000),1) ');
sql.Add(',C.* from Worker_WorkDetail C left join Cloth_Main A on A.MainId=C.MainId');
sql.Add('left join Cloth_sub B on C.SubId=B.SubId ');
sql.Add('where C.DownTime<' + quotedstr(trim(enddate.text)));
sql.Add('and C.DownTime>=' + quotedstr(trim(BegDate.text)));
case cxTabControl1.TabIndex of
0:
begin
sql.Add(' and not exists(select * from DCGMoney X where X.GZID=C.GZID) ');
sql.Add(' and C.Valid=''Y'' ');
end;
1:
begin
sql.Add(' and exists(select * from DCGMoney X where X.GZID=C.GZID) ');
sql.Add(' and C.Valid=''Y'' ');
end;
2:
begin
sql.Add(' and C.Valid=''N'' ');
end;
3:
begin
sql.Add(' and C.Valid=''Y'' ');
end;
end;
if Trim(FGZID) <> '' then
begin
sql.Add('and C.GZID=' + quotedstr(trim(FGZID)));
end;
sql.Add(' order by CarNo,DownTime');
// ShowMessage(SQL.Text);
Open;
end;
SCreateCDS20(ADOQueryMain, CDS_HZ);
SInitCDSData20(ADOQueryMain, CDS_HZ);
CDS_HZ.Last;
finally
ADOQueryMain.EnableControls;
end;
end;
procedure TfrmWorkDetail.FormDestroy(Sender: TObject);
begin
frmWorkDetail := nil;
end;
procedure TfrmWorkDetail.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree;
end;
procedure TfrmWorkDetail.TBCloseClick(Sender: TObject);
begin
WriteCxGrid(self.Caption, Tv2, <><D6AF><EFBFBD><EFBFBD>¼');
Close;
end;
procedure TfrmWorkDetail.FormShow(Sender: TObject);
begin
ReadCxGrid(self.Caption, Tv2, <><D6AF><EFBFBD><EFBFBD>¼');
SetStatus();
InitGrid();
end;
procedure TfrmWorkDetail.TBRafreshClick(Sender: TObject);
begin
InitGrid();
end;
procedure TfrmWorkDetail.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 TfrmWorkDetail.C_CodeNameChange(Sender: TObject);
begin
ToolButton2.Click;
end;
procedure TfrmWorkDetail.ToolButton1Click(Sender: TObject);
begin
if ADOQueryMain.IsEmpty then
Exit;
TcxGridToExcel(self.Caption, cxgrid2);
end;
procedure TfrmWorkDetail.FormCreate(Sender: TObject);
begin
EndDate.Text := FormatDateTime('yyyy-MM-dd', SGetServerDate10(ADOQueryTemp)) + ' 07:30:00';
BegDate.Text := FormatDateTime('yyyy-MM-dd', SGetServerDate10(ADOQueryTemp) - 1) + ' 07:30:00';
canshu1 := Trim(DParameters1);
end;
procedure TfrmWorkDetail.MenuItem1Click(Sender: TObject);
begin
SelOKNo(CDS_HZ, True);
end;
procedure TfrmWorkDetail.N1Click(Sender: TObject);
begin
SelOKNo(CDS_HZ, false);
end;
procedure TfrmWorkDetail.tbOKClick(Sender: TObject);
begin
try
CDS_HZ.DisableControls;
ADOQueryCmd.Connection.BeginTrans;
with ADOQueryCmd do
begin
Close;
sql.Clear;
sql.Add('delete TbForBatch where DName=' + quotedstr(Trim(DName)));
SQL.Add('and MainType=' + quotedstr('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'));
ExecSQL;
end;
with CDS_HZ do
begin
First;
while not Eof do
begin
if CDS_HZ.FieldByName('SSel').AsBoolean then
begin
with Self.ADOQueryCmd do
begin
Close;
sql.Clear;
sql.Add(' insert into TbForBatch(DName,MainType,Value1 ) ');
sql.Add(' values( ' + quotedstr(Trim(DName)) + ',' + quotedstr('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>') + ',' + quotedstr(Trim(CDS_HZ.fieldbyname('DetailId').AsString)) + ')');
ExecSQL;
end;
end;
Next;
end;
end;
with Self.ADOQueryCmd do
begin
Close;
sql.Clear;
SQL.Add('exec P_Do_UpGzMoney @DName=' + quotedstr(trim(DName)));
ExecSQL;
end;
ADOQueryCmd.Connection.CommitTrans;
CDS_HZ.EnableControls;
TBRafresh.Click;
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 TfrmWorkDetail.cxgrdDownQtyPropertiesEditValueChanged(Sender: TObject);
var
mvalue, FFieldName, FApid, FDetailId, Fopevent: string;
FDownQty, FQty, FCarBalance, FCarPrice, FMPMoney: Double;
YFDownQty, YFCarBalance: Double;
begin
mvalue := TcxTextEdit(Sender).EditingText;
if Trim(mvalue) = '' then
begin
mvalue := '0';
end;
FFieldName := Trim(Tv2.Controller.FocusedColumn.DataBinding.FilterFieldName);
with CDS_HZ do
begin
Edit;
FieldByName(FFieldName).Value := Trim(mvalue);
Post;
FDownQty := FieldByName('DownQty').AsFloat;
FCarBalance := FieldByName('CarBalance').AsFloat;
FCarPrice := FieldByName('CarPrice').AsFloat;
FApid := FieldByName('Apid').AsString;
FDetailId := FieldByName('DetailId').AsString;
end;
FQty := FDownQty;
FMPMoney := FQty * (FCarPrice + FCarBalance) / 10000;
with ADOQueryTemp do
begin
Close;
sql.Clear;
sql.Add('select * from Worker_WorkDetail where DetailId=' + quotedstr(FDetailId));
Open;
end;
YFDownQty := ADOQueryTemp.FieldByName('DownQty').AsFloat;
YFCarBalance := ADOQueryTemp.FieldByName('CarBalance').AsFloat;
Fopevent := 'ID:' + Trim(FDetailId);
Fopevent := Fopevent + ';<3B>»<EFBFBD>ת<EFBFBD>٣<EFBFBD>' + Trim(FloatToStr(YFDownQty)) + '>>>' + Trim(FloatToStr(FDownQty));
Fopevent := Fopevent + ';<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ۣ<EFBFBD>' + Trim(FloatToStr(YFCarBalance)) + '>>>' + Trim(FloatToStr(FCarBalance));
with ADOQueryTemp do
begin
Close;
sql.Clear;
sql.Add('select * from Worker_WorkDetail where Apid=' + quotedstr(FApid));
Open;
end;
if ADOQueryTemp.RecordCount > 1 then
Exit;
with CDS_HZ do
begin
Edit;
FieldByName('DownQty').Value := FDownQty;
FieldByName('Qty').Value := FQty;
FieldByName('CarBalance').Value := FCarBalance;
FieldByName('MPMoney').Value := FMPMoney;
Post;
end;
with ADOQueryCmd do
begin
Close;
sql.Clear;
sql.Add('UPdate Worker_WorkDetail ');
sql.Add(' Set DownQty=' + Trim(FloatToStr(FDownQty)));
sql.Add(' , Qty=' + Trim(FloatToStr(FQty)));
sql.Add(' , CarBalance=' + Trim(FloatToStr(FCarBalance)));
sql.Add(' where DetailId=' + quotedstr(Trim(FDetailId)));
ExecSQL;
end;
with ADOQueryCmd do
begin
Close;
sql.Clear;
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('<27>޸<EFBFBD>' + FFieldName)));
sql.Add(',' + quotedstr(Fopevent));
sql.Add(',' + quotedstr(trim('<27>ɹ<EFBFBD>')));
sql.Add(')');
ExecSQL;
end;
tv2.Controller.EditingController.ShowEdit();
end;
procedure TfrmWorkDetail.cxTabControl1Change(Sender: TObject);
begin
SetStatus();
InitGrid();
end;
procedure TfrmWorkDetail.ToolButton4Click(Sender: TObject);
begin
frmSysLogHelp := TfrmSysLogHelp.create(self);
with frmSysLogHelp do
begin
fModel := self.caption;
// facction:='<27><><EFBFBD><EFBFBD>ָʾ<D6B8><CABE>ɾ<EFBFBD><C9BE>';
showmodal;
free;
end;
end;
procedure TfrmWorkDetail.Tv2DblClick(Sender: TObject);
begin
try
frmWageEdit := TfrmWageEdit.Create(Application);
with frmWageEdit do
begin
FApid := Self.CDS_HZ.Fieldbyname('APID').asstring;
if ShowModal = 1 then
begin
end;
end;
finally
frmWageEdit.Free;
end;
end;
procedure TfrmWorkDetail.tbDelClick(Sender: TObject);
begin
try
CDS_HZ.DisableControls;
ADOQueryCmd.Connection.BeginTrans;
with CDS_HZ do
begin
while CDS_HZ.Locate('SSel', True, []) do
begin
with Self.ADOQueryCmd do
begin
Close;
sql.Clear;
SQL.Add('update Worker_WorkDetail set Valid=''N'' where DetailId=' + quotedstr(Trim(CDS_HZ.fieldbyname('DetailId').AsString)));
ExecSQL;
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 TfrmWorkDetail.tbDelCXClick(Sender: TObject);
begin
try
CDS_HZ.DisableControls;
ADOQueryCmd.Connection.BeginTrans;
with CDS_HZ do
begin
while CDS_HZ.Locate('SSel', True, []) do
begin
with Self.ADOQueryCmd do
begin
Close;
sql.Clear;
SQL.Add('update Worker_WorkDetail set Valid=''Y'' where DetailId=' + quotedstr(Trim(CDS_HZ.fieldbyname('DetailId').AsString)));
ExecSQL;
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;
end.