RTFormwork/项目代码/RTBasicsV1/A09财务通用管理/U_CollectWriteOff.pas
“ddf” 61630656e9 1
2024-07-07 09:35:27 +08:00

394 lines
11 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_CollectWriteOff;
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, Vcl.Menus,
dxSkinBasic, dxSkinBlack, dxSkinBlue, dxSkinBlueprint, dxSkinCaramel,
dxSkinCoffee, dxSkinDarkroom, dxSkinDarkSide, dxSkinDevExpressDarkStyle,
dxSkinDevExpressStyle, dxSkinFoggy, dxSkinGlassOceans, dxSkinHighContrast,
dxSkiniMaginary, dxSkinLilian, dxSkinLiquidSky, dxSkinLondonLiquidSky,
dxSkinMcSkin, dxSkinMetropolis, dxSkinMetropolisDark, dxSkinMoneyTwins,
dxSkinOffice2007Black, dxSkinOffice2007Blue, dxSkinOffice2007Green,
dxSkinOffice2007Pink, dxSkinOffice2007Silver, dxSkinOffice2010Black,
dxSkinOffice2010Blue, dxSkinOffice2010Silver, dxSkinOffice2013DarkGray,
dxSkinOffice2013LightGray, dxSkinOffice2013White, dxSkinOffice2016Colorful,
dxSkinOffice2016Dark, dxSkinOffice2019Black, dxSkinOffice2019Colorful,
dxSkinOffice2019DarkGray, dxSkinOffice2019White, dxSkinPumpkin, dxSkinSeven,
dxSkinSevenClassic, dxSkinSharp, dxSkinSharpPlus, dxSkinSilver,
dxSkinSpringtime, dxSkinStardust, dxSkinSummer2008, dxSkinTheAsphaltWorld,
dxSkinTheBezier, dxSkinValentine, dxSkinVisualStudio2013Blue,
dxSkinVisualStudio2013Dark, dxSkinVisualStudio2013Light, dxSkinVS2010,
dxSkinWhiteprint, dxSkinWXI, dxSkinXmas2008Blue, dxScrollbarAnnotations,
cxContainer, dxCore, cxDateUtils, cxMaskEdit, cxDropDownEdit, cxCalendar;
type
TfrmCollectWriteOff = class(TfrmBaseInput)
ToolBar1: TToolBar;
TBSave: TToolButton;
TBClose: TToolButton;
Tv1: TcxGridDBTableView;
cxGrid1Level1: TcxGridLevel;
cxGrid1: TcxGrid;
ADOQueryCmd: TADOQuery;
ADOQueryTmp: TADOQuery;
DS_Ysk: TDataSource;
CDS_Ysk: TClientDataSet;
v1Column1: TcxGridDBColumn;
v1Column3: TcxGridDBColumn;
v1Column4: TcxGridDBColumn;
v1Column5: TcxGridDBColumn;
v1Column6: TcxGridDBColumn;
v1Column7: TcxGridDBColumn;
v1Column9: TcxGridDBColumn;
VC_ORDERNO: TcxGridDBColumn;
v1PBNote: TcxGridDBColumn;
Panel1: TPanel;
v1Column8: TcxGridDBColumn;
v1Column10: TcxGridDBColumn;
v1Column11: TcxGridDBColumn;
Label6: TLabel;
F_Name: TcxTextEdit;
GPM_1: TcxGridPopupMenu;
Button1: TButton;
ToolButton1: TToolButton;
Label8: TLabel;
Label9: TLabel;
ADO_YSK: TADOQuery;
ADO_SK: TADOQuery;
Label3: TLabel;
curHsNum: TcxTextEdit;
ScrollBox1: TScrollBox;
Label1: TLabel;
Label2: TLabel;
Label4: TLabel;
Label5: TLabel;
OppCoName: TcxTextEdit;
Amount: TcxTextEdit;
FFWoAmount: TcxTextEdit;
NWoAmount: TcxTextEdit;
PM_1: TPopupMenu;
N1: TMenuItem;
N2: TMenuItem;
Enddate: TcxDateEdit;
begdate: TcxDateEdit;
procedure FormDestroy(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure TBCloseClick(Sender: TObject);
procedure v1Column7PropertiesEditValueChanged(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);
procedure ToolButton1Click(Sender: TObject);
procedure N1Click(Sender: TObject);
procedure N2Click(Sender: TObject);
private
procedure InitYsk();
procedure InitSk();
procedure SellRec(mFlag: integer);
{ Private declarations }
public
FFFID: string;
fOppCoNo, FKPNO, FOurCoName: string;
{ Public declarations }
end;
var
frmCollectWriteOff: TfrmCollectWriteOff;
implementation
uses
U_DataLink, U_RTFun, U_ZDYHelp;
{$R *.dfm}
procedure TfrmCollectWriteOff.SellRec(mFlag: integer);
var
tmpSum: double;
begin
tmpSum := 0.0;
try
CDS_Ysk.DisableControls;
with CDS_Ysk do
begin
first;
while not eof do
begin
tmpSum := tmpSum + FieldByName('NWoAmount').asFloat;
edit;
if mFlag = 0 then
begin
FieldByName('ssel').value := False;
FieldByName('CurWoAmount').value := 0;
end
else
begin
FieldByName('ssel').value := True;
if (tmpSum - StrToFloatDef(curHsNum.Text, 0)) > 0 then
FieldByName('CurWoAmount').value := FieldByName('NWoAmount').asFloat - (tmpSum - StrToFloatDef(curHsNum.Text, 0))
else
FieldByName('CurWoAmount').value := FieldByName('NWoAmount').asFloat;
end;
post;
//////////////
if (mFlag = 1) and ((tmpSum - StrToFloatDef(curHsNum.Text, 0)) > 0) then
break;
/////////////////////
next;
end;
end;
CDS_Ysk.EnableControls;
except
CDS_Ysk.EnableControls;
end;
end;
procedure TfrmCollectWriteOff.InitYsk();
begin
try
ADO_YSK.DisableControls;
with ADO_YSK do
begin
Close;
SQL.Clear;
Filtered := False;
sql.Add('select *,NWoAmount=Amount-isnull(FFWoAmount,0),CurWoAmount=0.00 ');
sql.Add('from Finance_Flow A ');
sql.Add(' where Amount-isnull(FFWoAmount,0)<>0');
sql.Add(' and FFType=' + quotedstr(trim(<>տ<EFBFBD><D5BF>Ǽ<EFBFBD>')));
sql.Add(' and A.status=''9'' ');
sql.Add(' and OppCoNo=' + quotedstr(trim(fOppCoNo)));
sql.Add(' and OurCoName=' + quotedstr(trim(FOurCoName)));
sql.Add(' order by FFTime,FFID ');
Open;
end;
SDofilter(ADO_YSK, SGetFilters(Panel1, 1, 2));
SCreateCDS(ADO_YSK, CDS_Ysk);
SInitCDSData(ADO_YSK, CDS_Ysk);
finally
ADO_YSK.EnableControls;
end;
end;
procedure TfrmCollectWriteOff.InitSk();
begin
try
ADO_SK.DisableControls;
with ADO_SK do
begin
Close;
SQL.Clear;
Filtered := False;
sql.Add('select *,NWoAmount=Amount-isnull(FFWoAmount,0) from Finance_Flow A ');
sql.Add('where FFID=' + quotedstr(trim(FFFID)));
sql.Add(' and A.status=''9'' ');
Open;
end;
SCSHData(ADO_SK, ScrollBox1, 0);
curHsNum.Text := ADO_SK.FieldByName('NWoAmount').AsString;
finally
ADO_SK.EnableControls;
end;
end;
procedure TfrmCollectWriteOff.FormDestroy(Sender: TObject);
begin
inherited;
frmCollectWriteOff := nil;
end;
procedure TfrmCollectWriteOff.FormCreate(Sender: TObject);
begin
inherited;
cxGrid1.Align := alclient;
end;
procedure TfrmCollectWriteOff.FormShow(Sender: TObject);
begin
inherited;
ReadCxGrid(self.Caption, Tv1, '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>');
Enddate.Date := SGetServerDate(ADOQueryTmp);
begdate.Date := Enddate.Date - 30;
InitSk();
InitYsk();
end;
procedure TfrmCollectWriteOff.TBCloseClick(Sender: TObject);
begin
close;
end;
procedure TfrmCollectWriteOff.v1Column7PropertiesEditValueChanged(Sender: TObject);
begin
try
CDS_Ysk.DisableControls;
if TcxCurrencyEdit(Sender).EditValue > CDS_Ysk.FieldByName('NWoAmount').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 CDS_Ysk do
begin
edit;
FieldByName('ssel').value := False;
FieldByName('CurWoAmount').value := 0;
Post;
end;
Exit;
end;
with CDS_Ysk do
begin
edit;
if TcxCurrencyEdit(Sender).EditValue = 0 then
FieldByName('ssel').value := False
else
FieldByName('ssel').value := True;
FieldByName('CurWoAmount').value := TcxCurrencyEdit(Sender).EditValue;
Post;
end;
finally
CDS_Ysk.EnableControls;
end;
end;
procedure TfrmCollectWriteOff.Button1Click(Sender: TObject);
var
tmpSum: double;
begin
tmpSum := 0.0;
try
CDS_Ysk.DisableControls;
with CDS_Ysk do
begin
first;
while not eof do
begin
if FieldByName('ssel').AsBoolean then
begin
tmpSum := tmpSum + FieldByName('NWoAmount').asFloat;
edit;
if (tmpSum - StrToFloatDef(curHsNum.Text, 0)) > 0 then
begin
FieldByName('CurWoAmount').value := FieldByName('NWoAmount').asFloat - (tmpSum - StrToFloatDef(curHsNum.Text, 0))
end
else
begin
FieldByName('CurWoAmount').value := FieldByName('NWoAmount').asFloat;
end;
end
else
begin
edit;
FieldByName('CurWoAmount').value := 0;
end;
post;
if FieldByName('ssel').AsBoolean and ((tmpSum - StrToFloatDef(curHsNum.Text, 0)) > 0) then
break;
next;
end;
end;
CDS_Ysk.Locate('SSel', True, []);
CDS_Ysk.EnableControls;
except
CDS_Ysk.EnableControls;
end;
end;
procedure TfrmCollectWriteOff.TBSaveClick(Sender: TObject);
begin
if CDS_Ysk.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><D5BF>ܽ<EFBFBD><DCBD><EFBFBD>!', '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ', 0);
Exit;
end;
try
CDS_Ysk.First;
while not CDS_Ysk.Eof do
begin
if CDS_Ysk.FieldByName('ssel').AsBoolean and (Abs(CDS_Ysk.FieldByName('CurWoAmount').AsFloat) > 0.001) then
begin
with AdoqueryCmd do
begin
Close;
SQL.Clear;
SQL.Add(' exec P_Fin_Flow_WriteOff');
SQL.Add(' @ToID = ' + QuotedStr(Trim(CDS_Ysk.FieldByName('FFID').AsString)));
SQL.Add(',@FromID = ' + QuotedStr(Trim(FFFID)));
SQL.Add(',@CurWoAmount = ' + FloatToStr(CDS_Ysk.FieldByName('CurWoAmount').AsFloat));
SQL.Add(',@DName = ' + QuotedStr(Trim(DName)));
Open;
end;
if ADOQueryCmd.FieldByName('intReturn').AsInteger = -1 then
raise Exception.Create(pchar(trim(ADOQueryCmd.FieldByName('ShowMsg').AsString)));
end;
CDS_Ysk.Next;
end;
except
application.MessageBox(PChar(Exception(ExceptObject).Message), '<27><>ʾ<EFBFBD><CABE>Ϣ', 0);
end;
InitYsk();
InitSk();
end;
procedure TfrmCollectWriteOff.ToolButton1Click(Sender: TObject);
begin
WriteCxGrid(self.Caption, Tv1, '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>');
end;
procedure TfrmCollectWriteOff.KHConNoKeyPress(Sender: TObject; var Key: Char);
begin
if Key = #13 then
begin
InitYsk();
end;
end;
procedure TfrmCollectWriteOff.N1Click(Sender: TObject);
begin
SellRec(1);
end;
procedure TfrmCollectWriteOff.N2Click(Sender: TObject);
begin
SellRec(0);
end;
procedure TfrmCollectWriteOff.EnddateChange(Sender: TObject);
begin
InitYsk();
end;
procedure TfrmCollectWriteOff.begdateChange(Sender: TObject);
begin
InitYsk();
end;
end.