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

406 lines
10 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_FKHx;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, cxDataStorage,
cxEdit, DB, cxDBData, cxGridLevel, cxClasses, cxControls, cxGridCustomView,
cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxGrid, StdCtrls,
ComCtrls, ToolWin, DBClient, ADODB, cxCurrencyEdit, cxCheckBox, ExtCtrls,
cxTextEdit, cxLookAndFeels, cxLookAndFeelPainters, cxNavigator, dxSkinsCore,
dxSkinsDefaultPainters, dxDateRanges, dxBarBuiltInMenu, cxGridCustomPopupMenu,
cxGridPopupMenu,U_BaseInput, System.ImageList, Vcl.ImgList;
type
TfrmFKHx = class(TFrmBaseInput)
ToolBar1: TToolBar;
TBSave: TToolButton;
TBClose: TToolButton;
GroupBox1: TGroupBox;
Label1: TLabel;
factoryName: TEdit;
Label2: TLabel;
Money: TEdit;
Label3: TLabel;
curHsNum: TEdit;
Tv1: TcxGridDBTableView;
cxGrid1Level1: TcxGridLevel;
cxGrid1: TcxGrid;
hxNum: TEdit;
Label4: TLabel;
NhxNum: TEdit;
Label5: TLabel;
ADOQueryCmd: TADOQuery;
ADOQueryTmp: TADOQuery;
DS_ysk: TDataSource;
cdsYsk: TClientDataSet;
ADOQueryYsk: TADOQuery;
v1Column1: TcxGridDBColumn;
v1Column3: TcxGridDBColumn;
v1Column4: TcxGridDBColumn;
v1Column5: TcxGridDBColumn;
v1Column6: TcxGridDBColumn;
v1Column7: TcxGridDBColumn;
v1Column9: TcxGridDBColumn;
CheckBox1: TCheckBox;
VC_ORDERNO: TcxGridDBColumn;
v1PBNote: TcxGridDBColumn;
v1KPNO: TcxGridDBColumn;
Panel1: TPanel;
Label7: TLabel;
KHConNo: TEdit;
Label8: TLabel;
Label9: TLabel;
begdate: TDateTimePicker;
Enddate: TDateTimePicker;
v1Column8: TcxGridDBColumn;
v1Column10: TcxGridDBColumn;
v1Column11: TcxGridDBColumn;
Label6: TLabel;
P_CodeName: TEdit;
Label10: TLabel;
IVNO: TEdit;
GPM_1: TcxGridPopupMenu;
Button1: TButton;
procedure FormDestroy(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure TBCloseClick(Sender: TObject);
procedure v1Column7PropertiesEditValueChanged(Sender: TObject);
procedure CheckBox1Click(Sender: TObject);
procedure TBSaveClick(Sender: TObject);
procedure KHConNoKeyPress(Sender: TObject; var Key: Char);
procedure EnddateChange(Sender: TObject);
procedure begdateChange(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
procedure InitYsk();
procedure Initsk();
procedure SellRec(mFlag: integer);
function savedata(mtype: integer): Boolean;
{ Private declarations }
public
fKeyNo: string;
ffactoryNO, FKPNO,FComTaiTou: string;
{ Public declarations }
end;
var
frmFKHx: TfrmFKHx;
implementation
uses
U_DataLink, U_RTFun, U_ZDYHelp;
{$R *.dfm}
function TfrmFKHx.savedata(mtype: integer): Boolean;
var
PZNo: string;
begin
result := false;
if GetLSNo(ADOQueryCmd, PZNo, 'HX', 'YF_log', 4, 1) = False then
begin
Application.MessageBox(<><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD>', '<27><>ʾ', 0);
Exit;
end;
with AdoqueryCmd do
begin
Close;
SQL.Clear;
SQL.Add('EXEC P_CW_HX_FK');
SQL.Add(' @ToID = ' + QuotedStr(Trim(cdsYsk.FieldByName('CWID').AsString)));
SQL.Add(',@FromID = ' + QuotedStr(Trim(fkeyNO)));
SQL.Add(',@hxMoney = ' + FloatToStr(cdsYsk.FieldByName('curHxNum').AsFloat));
SQL.Add(',@UserID = ' + QuotedStr(Trim(DName)));
Open;
if FieldByName('Result').AsInteger <> 0 then
begin
Application.MessageBox(PChar(FieldByName('ShowMsg').AsString), '<27><>ʾ', MB_ICONSTOP);
end
else
begin
Result := True;
end;
end;
end;
procedure TfrmFKHx.SellRec(mFlag: integer);
var
tmpSum: double;
begin
tmpSum := 0.0;
try
cdsYsk.DisableControls;
with cdsYsk do
begin
first;
while not eof do
begin
tmpSum := tmpSum + FieldByName('NHxNum').asFloat;
edit;
if mFlag = 0 then
begin
FieldByName('ssel').value := False;
FieldByName('curHxNum').value := 0;
end
else
begin
FieldByName('ssel').value := True;
if (tmpSum - StrToFloatDef(curHsNum.Text, 0)) > 0 then
FieldByName('curHxNum').value := FieldByName('NHxNum').asFloat - (tmpSum - StrToFloatDef(curHsNum.Text, 0))
else
FieldByName('curHxNum').value := FieldByName('NHxNum').asFloat;
end;
post;
//////////////
if (mFlag = 1) and ((tmpSum - StrToFloatDef(curHsNum.Text, 0)) > 0) then
break;
/////////////////////
next;
end;
end;
cdsYsk.EnableControls;
except
cdsYsk.EnableControls;
end;
end;
procedure TfrmFKHx.InitYsk();
begin
try
ADOQueryTmp.DisableControls;
with ADOQueryTmp do
begin
Close;
SQL.Clear;
Filtered := False;
sql.Add('select *,NhxNum=Money-isnull(hxNum,0),curHxNum=0.00 ');
sql.Add('from CW_Money_CR A ');
sql.Add('where factoryNo=' + quotedstr(trim(ffactoryNo)));
sql.Add('and ComTaiTou=' + quotedstr(trim(FComTaiTou)));
sql.Add(' and CRType=' + quotedstr(trim(<><D3A6><EFBFBD><EFBFBD><EFBFBD>Ǽ<EFBFBD>')));
sql.Add(' and Money-isnull(hxNum,0)<>0');
sql.Add(' and A.status=''1'' ');
if trim(KHConNo.Text) <> '' then
sql.Add(' and KHConNo like ''%' + trim(KHConNo.Text) + '%'' ');
if trim(P_CodeName.Text) <> '' then
sql.Add(' and P_CodeName like ''%' + trim(P_CodeName.Text) + '%'' ');
if trim(IVNO.Text) <> '' then
sql.Add(' and P_KuanNO like ''%' + trim(IVNO.Text) + '%'' ');
// sql.Add('and A.CRTime>=''' + FormatDateTime('yyyy-MM-dd', begdate.DateTime) + ''' ');
// sql.Add(' and CRTime<''' + FormatDateTime('yyyy-MM-dd', Enddate.DateTime + 1) + ''' ');
sql.Add(' order by CRTime,CWID ');
// ShowMessage(SQL.Text);
Open;
end;
SCreateCDS(ADOQueryTmp, cdsYsk);
SInitCDSData(ADOQueryTmp, cdsYsk);
finally
;
ADOQueryTmp.EnableControls;
end;
end;
procedure TfrmFKHx.Initsk();
begin
try
ADOQueryTmp.DisableControls;
with ADOQueryTmp do
begin
Close;
SQL.Clear;
Filtered := False;
sql.Add('select *,NhxNum=Money-isnull(hxNum,0) from CW_Money_CR A ');
sql.Add('where CWID=' + quotedstr(trim(fkeyNO)));
Open;
end;
if not ADOQueryTmp.IsEmpty then
begin
factoryName.Text := trim(ADOQueryTmp.fieldbyname('factoryName').AsString);
money.Text := trim(ADOQueryTmp.fieldbyname('Money').AsString);
hxNUm.Text := trim(ADOQueryTmp.fieldbyname('hxNUm').AsString);
NhxNUm.Text := trim(ADOQueryTmp.fieldbyname('NhxNUm').AsString);
curHsNum.Text := NhxNUm.Text;
end;
finally
;
ADOQueryTmp.EnableControls;
end;
end;
procedure TfrmFKHx.FormDestroy(Sender: TObject);
begin inherited;
frmFKHx := nil;
end;
procedure TfrmFKHx.FormCreate(Sender: TObject);
begin inherited;
cxGrid1.Align := alclient;
end;
procedure TfrmFKHx.FormShow(Sender: TObject);
begin inherited;
ReadCxGrid(self.Caption, Tv1, '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>');
Enddate.DateTime := SGetServerDate(ADOQueryTmp);
begdate.DateTime := Enddate.DateTime - 30;
initsk();
initysk();
end;
procedure TfrmFKHx.TBCloseClick(Sender: TObject);
begin
WriteCxGrid(self.Caption, Tv1, '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>');
close;
end;
procedure TfrmFKHx.v1Column7PropertiesEditValueChanged(Sender: TObject);
begin
try
cdsYsk.DisableControls;
if TcxCurrencyEdit(Sender).EditValue > cdsYsk.FieldByName('NHxNum').AsFloat then
begin
Application.MessageBox('<27><><EFBFBD>κ<EFBFBD><CEBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܲ<EFBFBD><DCB2><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!', '<27><>ʾ<EFBFBD><CABE>Ϣ', 0);
TcxCurrencyEdit(Sender).EditValue := null;
with cdsYsk do
begin
edit;
FieldByName('ssel').value := False;
FieldByName('curHxNum').value := 0;
Post;
end;
Exit;
end;
with cdsYsk do
begin
edit;
if TcxCurrencyEdit(Sender).EditValue = 0 then
FieldByName('ssel').value := False
else
FieldByName('ssel').value := True;
FieldByName('curHxNum').value := TcxCurrencyEdit(Sender).EditValue;
Post;
end;
finally
cdsYsk.EnableControls;
end;
end;
procedure TfrmFKHx.Button1Click(Sender: TObject);
var
tmpSum: double;
begin
tmpSum := 0.0;
try
cdsYsk.DisableControls;
with cdsYsk do
begin
first;
while not eof do
begin
if FieldByName('ssel').AsBoolean then
begin
tmpSum := tmpSum + FieldByName('NHxNum').asFloat;
edit;
if (tmpSum - StrToFloatDef(curHsNum.Text, 0)) > 0 then
begin
FieldByName('curHxNum').value := FieldByName('NHxNum').asFloat - (tmpSum - StrToFloatDef(curHsNum.Text, 0))
end
else
begin
FieldByName('curHxNum').value := FieldByName('NHxNum').asFloat;
end;
end
else
begin
edit;
FieldByName('curHxNum').value := 0;
end;
post;
if FieldByName('ssel').AsBoolean and ((tmpSum - StrToFloatDef(curHsNum.Text, 0)) > 0) then
break;
next;
end;
end;
cdsYsk.Locate('SSel', True, []);
cdsYsk.EnableControls;
except
cdsYsk.EnableControls;
end;
end;
procedure TfrmFKHx.CheckBox1Click(Sender: TObject);
begin
if checkBox1.Checked then
SellRec(1)
else
SellRec(0);
end;
procedure TfrmFKHx.TBSaveClick(Sender: TObject);
begin
if cdsYsk.IsEmpty then
begin
Application.MessageBox(<>ж<EFBFBD>Ӧ<EFBFBD><D3A6>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼!', '<27><>ʾ<EFBFBD><CABE>Ϣ', 0);
Exit;
end;
if Abs((tv1.DataController.Summary.FooterSummaryValues[3])) <= 0.000001 then
begin
Application.MessageBox(ѡ<CEB4><D1A1><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼!', '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ', 0);
Exit;
end;
if (tv1.DataController.Summary.FooterSummaryValues[3] - StrToFloatDef(curHsNum.Text, 0)) > 0.0 then
begin
Application.MessageBox('<27><><EFBFBD>κ<EFBFBD><CEBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>ǰ<EFBFBD>ɺ<EFBFBD><C9BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܽ<EFBFBD><DCBD><EFBFBD>!', '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ', 0);
Exit;
end;
ADOQueryCmd.Connection.BeginTrans;
try
cdsYsk.First;
while not cdsYsk.Eof do
begin
if cdsYsk.FieldByName('ssel').AsBoolean and (Abs(cdsYsk.FieldByName('curHxNum').AsFloat) > 0.001) then
begin
if not savedata(1) then
begin
ADOQueryCmd.Connection.RollbackTrans;
Exit;
end;
end;
cdsYsk.Next;
end;
ADOQueryCmd.Connection.CommitTrans;
finally
Initysk();
initsk();
end;
end;
procedure TfrmFKHx.KHConNoKeyPress(Sender: TObject; var Key: Char);
begin
if Key = #13 then
begin
InitYsk();
end;
end;
procedure TfrmFKHx.EnddateChange(Sender: TObject);
begin
InitYsk();
end;
procedure TfrmFKHx.begdateChange(Sender: TObject);
begin
InitYsk();
end;
end.