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.
|
|||
|
|