D7szChenfeng/应收应付/U_XXFPHx.pas
DESKTOP-E401PHE\Administrator ccdaa90a0f 移交
2025-07-22 15:51:47 +08:00

395 lines
10 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_XXFPHx;
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, cxGridCustomPopupMenu,
cxGridPopupMenu;
type
TfrmXXFPHx = class(TForm)
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;
ADOQueryTmp: TADOQuery;
DS_ysk: TDataSource;
cdsYsk: TClientDataSet;
ADOQueryYsk: TADOQuery;
v1Column1: TcxGridDBColumn;
v1Column2: TcxGridDBColumn;
v1Column3: TcxGridDBColumn;
v1Column4: TcxGridDBColumn;
v1Column5: TcxGridDBColumn;
v1Column6: TcxGridDBColumn;
v1Column7: TcxGridDBColumn;
v1Column9: TcxGridDBColumn;
CheckBox1: TCheckBox;
v1OrderNO: TcxGridDBColumn;
v1PBNote: TcxGridDBColumn;
Panel1: TPanel;
Label7: TLabel;
OrderNo: TEdit;
Label8: TLabel;
Label9: TLabel;
begdate: TDateTimePicker;
Enddate: TDateTimePicker;
v1Column8: TcxGridDBColumn;
v1Column10: TcxGridDBColumn;
v1Column11: TcxGridDBColumn;
v1Column12: TcxGridDBColumn;
v1Column13: TcxGridDBColumn;
v1Column14: TcxGridDBColumn;
ADOQueryCmd: TADOQuery;
cxGridPopupMenu2: TcxGridPopupMenu;
v1Column15: TcxGridDBColumn;
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 OrderNoKeyPress(Sender: TObject; var Key: Char);
procedure EnddateChange(Sender: TObject);
procedure begdateChange(Sender: TObject);
procedure Tv1DblClick(Sender: TObject);
private
procedure InitYsk();
procedure Initsk();
procedure SellRec(mFlag:integer);
function savedata():Boolean;
{ Private declarations }
public
fKeyNo:string;
ffactoryName,FKPNO:string;
{ Public declarations }
end;
var
frmXXFPHx: TfrmXXFPHx;
implementation
uses
U_DataLink,U_Fun10,U_ZDYHelp;
{$R *.dfm}
function TfrmXXFPHx.savedata():Boolean;
var
PZNo: String;
begin
result:=false;
try
if GetLSNo(ADOQueryTmp,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(' insert into YF_log(AutoID,FromNo,ToNo,Num,Type,Filler)');
sql.Add('values('+quotedstr(trim(PZNo))
+','+quotedstr(trim(fkeyNO))
+','+quotedstr(trim(cdsYsk.FieldByName('YFSID').AsString))
+','+trim(floattostr(cdsYsk.FieldByName('curHxNum').AsFloat))
+','+quotedstr(trim('XXFP'))
+','+quotedstr(trim(DName))+')');
execsql;
end;
with AdoqueryCmd do
begin
Close;
SQL.Clear;
SQL.Add('exec P_Do_HxXXFP @PZNo= ' + QuotedStr(PZNo));
SQL.Add(',@CZType= ''<27><><EFBFBD><EFBFBD>''');
execsql;
end;
except
result:=false;
end;
result:=true;
end;
procedure TfrmXXFPHx.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 TfrmXXFPHx.InitYsk();
begin
try
ADOQueryTmp.DisableControls;
with ADOQueryTmp do
begin
Close;
SQL.Clear;
Filtered:=False;
sql.Add('select *,NhxNum=MXMoney-isnull(FPHX,0),curHxNum=0.00 ');
sql.Add('from YF_Money_CR A inner join YF_Money_CR_Sub B on A.YFID=B.YFID');
sql.Add('where A.factoryName='+quotedstr(trim(ffactoryName)));
sql.Add(' and A.CRType='+quotedstr(trim(<>տ<EFBFBD><D5BF>Ǽ<EFBFBD>')));
sql.Add(' and A.status=''1''');
sql.Add(' and MXMoney-isnull(FPHX,0)<>0');
if trim(OrderNo.Text)<>'' then
sql.Add(' and OrderNo like ''%'+trim(OrderNo.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 ');
Open;
end;
SCreateCDS20(ADOQueryTmp,cdsYsk);
SInitCDSData20(ADOQueryTmp,cdsYsk);
finally;
ADOQueryTmp.EnableControls;
end;
end;
procedure TfrmXXFPHx.Initsk();
begin
try
ADOQueryTmp.DisableControls;
with ADOQueryTmp do
begin
Close;
SQL.Clear;
Filtered:=False;
sql.Add('select * ');
sql.Add(' ,taxMoney=(select SUM(taxMoney) from FD_Invoicesub X where X.invoiceNo=A.invoiceNo) ');
sql.Add(' ,NhxNum=(select SUM(taxMoney) from FD_Invoicesub X where X.invoiceNo=A.invoiceNo)-isnull(HZFPHX,0) ');
sql.Add('from FD_Invoice A where InvoiceNo='+quotedstr(trim(fkeyNO)));
Open;
end;
IF not ADOQueryTmp.IsEmpty then
begin
factoryName.Text:=trim(ffactoryName);
money.Text:=trim(ADOQueryTmp.fieldbyname('taxMoney').AsString);
hxNUm.Text:=trim(ADOQueryTmp.fieldbyname('HZFPHX').AsString);
NhxNUm.Text:=trim(ADOQueryTmp.fieldbyname('NhxNUm').AsString);
curHsNum.Text:=NhxNUm.Text;
end;
finally;
ADOQueryTmp.EnableControls;
end;
end;
procedure TfrmXXFPHx.FormDestroy(Sender: TObject);
begin
frmXXFPHx:=nil;
end;
procedure TfrmXXFPHx.FormCreate(Sender: TObject);
begin
cxGrid1.Align:=alclient;
end;
procedure TfrmXXFPHx.FormShow(Sender: TObject);
begin
ReadCxGrid(self.Caption,Tv1,'<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>');
Enddate.DateTime:=SGetServerDate(ADOQueryTmp);
begdate.DateTime:=Enddate.DateTime-30;
initsk();
initysk();
end;
procedure TfrmXXFPHx.TBCloseClick(Sender: TObject);
begin
WriteCxGrid(self.Caption,Tv1,'<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>');
close;
end;
procedure TfrmXXFPHx.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 TfrmXXFPHx.CheckBox1Click(Sender: TObject);
begin
if checkBox1.Checked then SellRec(1)
else SellRec(0);
end;
procedure TfrmXXFPHx.TBSaveClick(Sender: TObject);
begin
if cdsYsk.IsEmpty then
begin
Application.MessageBox(<>ж<EFBFBD>Ӧ<EFBFBD><D3A6>Ӧ<EFBFBD>տ<EFBFBD><D5BF><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>տ<EFBFBD><D5BF><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><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() then
begin
ADOQueryCmd.Connection.RollbackTrans;
Exit;
end;
end;
cdsYsk.Next ;
end;
ADOQueryCmd.Connection.CommitTrans;
finally
Initysk();
initsk();
end;
end;
procedure TfrmXXFPHx.OrderNoKeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
begin
InitYsk();
end;
end;
procedure TfrmXXFPHx.EnddateChange(Sender: TObject);
begin
InitYsk();
end;
procedure TfrmXXFPHx.begdateChange(Sender: TObject);
begin
InitYsk();
end;
procedure TfrmXXFPHx.Tv1DblClick(Sender: TObject);
var
MZZHX,McurHxNum,MYXHX,MDDHX,MDHX:Double;
begin
McurHxNum:=StrToFloatDef(curHsNum.Text,0); //<2F>ɺ<EFBFBD><C9BA><EFBFBD><EFBFBD>ܽ<EFBFBD><DCBD><EFBFBD>
MYXHX:=tv1.DataController.Summary.FooterSummaryValues[3]; //<2F><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
MDHX:=cdsYsk.FieldByName('curHxNum').asFloat; //׼<><D7BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
MDDHX:=cdsYsk.FieldByName('NhxNum').asFloat; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if MDHX>0 then
begin
cdsYsk.edit;
cdsYsk.FieldByName('curHxNum').value:=0;
cdsYsk.FieldByName('Ssel').value:=False;
cdsYsk.Post;
end
else
begin
if McurHxNum-MYXHX<=0 then Exit;
MZZHX:= McurHxNum-MYXHX-MDDHX;
cdsYsk.edit;
if MZZHX>=0 then
begin
cdsYsk.FieldByName('curHxNum').value:=MDDHX;
cdsYsk.FieldByName('Ssel').value:=True;
end
else
begin
cdsYsk.FieldByName('curHxNum').value:=McurHxNum-MYXHX;
cdsYsk.FieldByName('Ssel').value:=True;
end;
cdsYsk.Post;
end;
end;
end.