394 lines
11 KiB
ObjectPascal
394 lines
11 KiB
ObjectPascal
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.
|
||
|