425 lines
12 KiB
ObjectPascal
425 lines
12 KiB
ObjectPascal
unit U_YpBaoJiaMx;
|
||
|
||
interface
|
||
|
||
uses
|
||
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
|
||
Dialogs, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, cxDataStorage,
|
||
cxEdit, DB, cxDBData, cxGridLevel, cxGridCustomTableView, cxGridTableView,
|
||
cxGridDBTableView, cxClasses, cxControls, cxGridCustomView, cxGrid, cxMemo,
|
||
cxRichEdit, ComCtrls, cxContainer, cxTextEdit, cxMaskEdit, cxButtonEdit,
|
||
StdCtrls, ToolWin, DBClient, ADODB, ExtCtrls, BtnEdit, cxDropDownEdit;
|
||
|
||
type
|
||
TfrmYpBaoJiaMx = class(TForm)
|
||
ToolBar1: TToolBar;
|
||
TBClose: TToolButton;
|
||
ADOTemp: TADOQuery;
|
||
ADOCmd: TADOQuery;
|
||
DataSource1: TDataSource;
|
||
Order_Sub: TClientDataSet;
|
||
ADOQuery1: TADOQuery;
|
||
ScrollBox1: TScrollBox;
|
||
Label1: TLabel;
|
||
Label4: TLabel;
|
||
Label2: TLabel;
|
||
Label3: TLabel;
|
||
Label13: TLabel;
|
||
Label6: TLabel;
|
||
Label20: TLabel;
|
||
Label22: TLabel;
|
||
Label23: TLabel;
|
||
Label24: TLabel;
|
||
Label26: TLabel;
|
||
Label27: TLabel;
|
||
Label28: TLabel;
|
||
BjNo: TEdit;
|
||
Jhtime: TDateTimePicker;
|
||
Bjtime: TDateTimePicker;
|
||
CustomerName: TcxButtonEdit;
|
||
GyNote: TEdit;
|
||
BjCode: TcxButtonEdit;
|
||
BjName: TEdit;
|
||
BjMF: TEdit;
|
||
BjKZ: TEdit;
|
||
Qty: TEdit;
|
||
BjZKS: TEdit;
|
||
BJer: TcxButtonEdit;
|
||
BJPhone: TEdit;
|
||
ScrollBox2: TScrollBox;
|
||
Label34: TLabel;
|
||
Label35: TLabel;
|
||
Label36: TLabel;
|
||
Label37: TLabel;
|
||
Label38: TLabel;
|
||
Label39: TLabel;
|
||
Label40: TLabel;
|
||
Label50: TLabel;
|
||
Label51: TLabel;
|
||
Label52: TLabel;
|
||
Label53: TLabel;
|
||
Label54: TLabel;
|
||
HclCost: TEdit;
|
||
YfCost: TEdit;
|
||
KfCost: TEdit;
|
||
YwCost: TEdit;
|
||
LxCost: TEdit;
|
||
DjBzCost: TEdit;
|
||
Price: TEdit;
|
||
CbPrice: TEdit;
|
||
SdCost: TEdit;
|
||
Lr: TEdit;
|
||
Lrd: TEdit;
|
||
ZzCost: TEdit;
|
||
cxGrid1: TcxGrid;
|
||
Tv1: TcxGridDBTableView;
|
||
v1Column10: TcxGridDBColumn;
|
||
v1Column1: TcxGridDBColumn;
|
||
v1Column7: TcxGridDBColumn;
|
||
v1Column2: TcxGridDBColumn;
|
||
v1Column3: TcxGridDBColumn;
|
||
cxGrid1Level1: TcxGridLevel;
|
||
v1Column5: TcxGridDBColumn;
|
||
Label5: TLabel;
|
||
Label7: TLabel;
|
||
Label8: TLabel;
|
||
Label9: TLabel;
|
||
Label10: TLabel;
|
||
Label11: TLabel;
|
||
BjNote: TMemo;
|
||
HclPrice: TEdit;
|
||
CustomerLevel: TEdit;
|
||
BlKfCost: TEdit;
|
||
BlLxCost: TEdit;
|
||
BlYwCost: TEdit;
|
||
BlSdCost: TEdit;
|
||
Label12: TLabel;
|
||
Chker: TEdit;
|
||
Label14: TLabel;
|
||
Chktime: TDateTimePicker;
|
||
Label15: TLabel;
|
||
Label16: TLabel;
|
||
ZshCost: TEdit;
|
||
BlZshCost: TEdit;
|
||
Label17: TLabel;
|
||
PpShCost: TEdit;
|
||
BlPpShCost: TEdit;
|
||
Label18: TLabel;
|
||
CpBfCost: TEdit;
|
||
BLCpBfCost: TEdit;
|
||
procedure TBCloseClick(Sender: TObject);
|
||
procedure FormShow(Sender: TObject);
|
||
procedure FormCreate(Sender: TObject);
|
||
procedure ZzCostKeyPress(Sender: TObject; var Key: Char);
|
||
procedure HclCostExit(Sender: TObject);
|
||
procedure v1Column1PropertiesEditValueChanged(Sender: TObject);
|
||
procedure CustomerNamePropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
|
||
procedure BjZKSExit(Sender: TObject);
|
||
procedure ScrollBox2Click(Sender: TObject);
|
||
procedure ScrollBox1Click(Sender: TObject);
|
||
private
|
||
FXS: Integer;
|
||
procedure InitData();
|
||
procedure InitWlPb();
|
||
procedure upWlPb();
|
||
function RoundFloat(f: double; i: integer): double;
|
||
procedure CBHJ();
|
||
function Setstring(cString: string): string;
|
||
{ Private declarations }
|
||
public
|
||
PState, PCopyInt: Integer;
|
||
FMainId, FConNo: string;
|
||
FFChaShu: string;
|
||
{ Public declarations }
|
||
end;
|
||
|
||
var
|
||
frmYpBaoJiaMx: TfrmYpBaoJiaMx;
|
||
|
||
implementation
|
||
|
||
uses
|
||
U_DataLink, U_ZDYHelp, U_Fun, U_ZdyAttachment;
|
||
|
||
{$R *.dfm}
|
||
function TfrmYpBaoJiaMx.Setstring(cString: string): string; {<7B><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>}
|
||
var
|
||
i: integer;
|
||
str: string;
|
||
begin
|
||
str := '';
|
||
for i := 1 to length(cString) do
|
||
begin
|
||
if Pos(cString[i], '0123456789.') <= 0 then
|
||
break
|
||
else
|
||
case cString[i] of
|
||
'.':
|
||
str := str + '.';
|
||
|
||
'0':
|
||
str := str + '0';
|
||
'1':
|
||
str := str + '1';
|
||
'2':
|
||
str := str + '2';
|
||
'3':
|
||
str := str + '3';
|
||
'4':
|
||
str := str + '4';
|
||
'5':
|
||
str := str + '5';
|
||
'6':
|
||
str := str + '6';
|
||
'7':
|
||
str := str + '7';
|
||
'8':
|
||
str := str + '8';
|
||
'9':
|
||
str := str + '9';
|
||
end;
|
||
end;
|
||
Setstring := str;
|
||
end;
|
||
|
||
procedure TfrmYpBaoJiaMx.upWlPb();
|
||
var
|
||
MBiLi, MMmkz, MYlShb, MWlPrice, MWlMoney, MBjZKS: Double;
|
||
begin
|
||
if Order_Sub.IsEmpty then
|
||
Exit;
|
||
MBjZKS := StrToFloatDef(BjZKS.Text, 0);
|
||
with Order_Sub do
|
||
begin
|
||
DisableControls;
|
||
First;
|
||
while not Eof do
|
||
begin
|
||
MBiLi := fieldbyname('BiLi').AsFloat;
|
||
MYlShb := fieldbyname('YlShb').AsFloat;
|
||
MWlPrice := fieldbyname('WlPrice').AsFloat;
|
||
MMmkz := RoundFloat(MBjZKS * MBiLi / 100, 2);
|
||
MWlMoney := RoundFloat(MWlPrice * MMmkz / 1000 * (MYlShb + 100) / 100, 2);
|
||
Edit;
|
||
fieldbyname('Mmkz').Value := MMmkz;
|
||
fieldbyname('WlMoney').Value := MWlMoney;
|
||
Next;
|
||
end;
|
||
EnableControls;
|
||
end;
|
||
tv1.Controller.EditingController.ShowEdit();
|
||
end;
|
||
|
||
procedure TfrmYpBaoJiaMx.InitWlPb();
|
||
begin
|
||
with ADOTemp do
|
||
begin
|
||
Close;
|
||
SQL.Clear;
|
||
sql.Add('select * from BaoJiaSub A ');
|
||
sql.Add(' where A.BjMainID=(select max(BjMainID) from BaoJiaMain where BjCode=' + Quotedstr(Trim(BjCode.Text)) + ')');
|
||
// ShowMessage(SQL.Text);
|
||
Open;
|
||
end;
|
||
SCreateCDS20(ADOTemp, Order_Sub);
|
||
SInitCDSData20(ADOTemp, Order_Sub);
|
||
end;
|
||
|
||
function TfrmYpBaoJiaMx.RoundFloat(f: double; i: integer): double;
|
||
var
|
||
s: string;
|
||
ef: extended;
|
||
begin
|
||
s := '#.' + StringOfChar('0', i);
|
||
ef := StrToFloat(FloatToStr(f)); //<2F><>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
result := StrToFloat(FormatFloat(s, ef));
|
||
end;
|
||
|
||
procedure TfrmYpBaoJiaMx.CBHJ();
|
||
var
|
||
MWlCost, MHclPrice, MZzCost, MHclCost, MDjBzCost, MKfCost, MBlKfCost, MYfCost, MLxCost, MBlLxCost, MYwCost, MBlYwCost, MSdCost, MBlSdCost, MBjZKS, MCbPrice, MPrice, MLr, MLrd: Double;
|
||
begin
|
||
if TV1.DataController.Summary.FooterSummaryValues[0] <> NULL then
|
||
MWlCost := TV1.DataController.Summary.FooterSummaryValues[0]
|
||
else
|
||
MWlCost := 0;
|
||
MBjZKS := StrToFloatDef(BjZKS.Text, 0);
|
||
MZzCost := StrToFloatDef(ZzCost.Text, 0);
|
||
MHclPrice := StrToFloatDef(HclPrice.Text, 0);
|
||
MDjBzCost := StrToFloatDef(DjBzCost.Text, 0);
|
||
MPrice := StrToFloatDef(Price.Text, 0);
|
||
MHclCost := RoundFloat(MBjZKS * MHclPrice / 1000, 2);
|
||
HclCost.Text := FloatToStr(MHclCost);
|
||
MBlKfCost := StrToFloatDef(BlKfCost.Text, 0);
|
||
//<2F><><EFBFBD><EFBFBD>
|
||
MKfCost := RoundFloat((MWlCost + MZzCost + MHclCost + MDjBzCost) * MBlKfCost / 100, 2);
|
||
KfCost.Text := FloatToStr(MKfCost);
|
||
//<2F>˷<EFBFBD>
|
||
MYfCost := StrToFloatDef(YfCost.Text, 0);
|
||
//<2F><>Ϣ
|
||
MBlLxCost := StrToFloatDef(BlLxCost.Text, 0);
|
||
MLxCost := RoundFloat((MWlCost + MZzCost + MHclCost + MDjBzCost + MKfCost + MYfCost) * MBlLxCost / 100, 2);
|
||
LxCost.Text := FloatToStr(MLxCost);
|
||
//ҵ<><D2B5><EFBFBD><EFBFBD>
|
||
MBlYwCost := StrToFloatDef(BlYwCost.Text, 0);
|
||
MYwCost := RoundFloat((MWlCost + MZzCost + MHclCost + MDjBzCost + MKfCost + MYfCost + MLxCost) * MBlYwCost / 100, 2);
|
||
YwCost.Text := FloatToStr(MYwCost);
|
||
//˰<><CBB0>
|
||
MBlSdCost := StrToFloatDef(BlSdCost.Text, 0);
|
||
MSdCost := RoundFloat((MWlCost + MZzCost + MHclCost + MDjBzCost + MKfCost + MYfCost + MLxCost + MYwCost) * MBlSdCost / 100, 2);
|
||
SdCost.Text := FloatToStr(MSdCost);
|
||
|
||
MCbPrice := MWlCost + MZzCost + MHclCost + MDjBzCost + MKfCost + MYfCost + MLxCost + MYwCost + MSdCost;
|
||
MCbPrice := RoundFloat(MCbPrice, 2);
|
||
CbPrice.Text := FloatToStr(MCbPrice);
|
||
if MPrice > 0 then
|
||
begin
|
||
MLr := MPrice - MCbPrice;
|
||
MLrd := RoundFloat(MLr / MCbPrice * 100, 2);
|
||
Lr.Text := FloatToStr(MLr);
|
||
Lrd.Text := FloatToStr(MLrd);
|
||
end;
|
||
end;
|
||
|
||
procedure TfrmYpBaoJiaMx.TBCloseClick(Sender: TObject);
|
||
begin
|
||
Close;
|
||
end;
|
||
|
||
procedure TfrmYpBaoJiaMx.InitData();
|
||
begin
|
||
with ADOQuery1 do
|
||
begin
|
||
Close;
|
||
SQL.Clear;
|
||
sql.Add('select A.*');
|
||
sql.Add('from BaoJiaSub A inner join BaoJiaMain B on A.BjMainID=B.BjMainID');
|
||
sql.Add('where B.BjNo=''' + FMainId + '''');
|
||
Open;
|
||
end;
|
||
SCreateCDS20(ADOQuery1, Order_Sub);
|
||
SInitCDSData20(ADOQuery1, Order_Sub);
|
||
with ADOQuery1 do
|
||
begin
|
||
Close;
|
||
SQL.Clear;
|
||
sql.Add('select A.*');
|
||
sql.Add('from BaoJiaMain A');
|
||
sql.Add('where A.BjNo=''' + FMainId + '''');
|
||
Open;
|
||
end;
|
||
SCSHData(ADOQuery1, ScrollBox1, 0);
|
||
SCSHData(ADOQuery1, ScrollBox2, 0);
|
||
end;
|
||
|
||
procedure TfrmYpBaoJiaMx.FormShow(Sender: TObject);
|
||
begin
|
||
InitData();
|
||
|
||
end;
|
||
|
||
procedure TfrmYpBaoJiaMx.FormCreate(Sender: TObject);
|
||
begin
|
||
SetWindowLong(ZzCost.Handle, GWL_STYLE, GetWindowLong(ZzCost.Handle, GWL_STYLE) or ES_MULTILINE or ES_RIGHT);
|
||
SetWindowLong(HclCost.Handle, GWL_STYLE, GetWindowLong(HclCost.Handle, GWL_STYLE) or ES_MULTILINE or ES_RIGHT);
|
||
SetWindowLong(DjBzCost.Handle, GWL_STYLE, GetWindowLong(DjBzCost.Handle, GWL_STYLE) or ES_MULTILINE or ES_RIGHT);
|
||
SetWindowLong(KfCost.Handle, GWL_STYLE, GetWindowLong(KfCost.Handle, GWL_STYLE) or ES_MULTILINE or ES_RIGHT);
|
||
SetWindowLong(YfCost.Handle, GWL_STYLE, GetWindowLong(YfCost.Handle, GWL_STYLE) or ES_MULTILINE or ES_RIGHT);
|
||
SetWindowLong(LxCost.Handle, GWL_STYLE, GetWindowLong(LxCost.Handle, GWL_STYLE) or ES_MULTILINE or ES_RIGHT);
|
||
SetWindowLong(YwCost.Handle, GWL_STYLE, GetWindowLong(YwCost.Handle, GWL_STYLE) or ES_MULTILINE or ES_RIGHT);
|
||
SetWindowLong(SdCost.Handle, GWL_STYLE, GetWindowLong(SdCost.Handle, GWL_STYLE) or ES_MULTILINE or ES_RIGHT);
|
||
SetWindowLong(ZshCost.Handle, GWL_STYLE, GetWindowLong(ZshCost.Handle, GWL_STYLE) or ES_MULTILINE or ES_RIGHT);
|
||
end;
|
||
|
||
procedure TfrmYpBaoJiaMx.ZzCostKeyPress(Sender: TObject; var Key: Char);
|
||
begin
|
||
if not (((Key >= '0') and (Key <= '9')) or (Key = '.') or (Key = #8)) then
|
||
begin
|
||
Key := #0;
|
||
end
|
||
else if (pos('.', TEdit(Sender).text) <> 0) then
|
||
begin
|
||
if Key = '.' then
|
||
begin
|
||
Key := #0;
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
procedure TfrmYpBaoJiaMx.HclCostExit(Sender: TObject);
|
||
begin
|
||
CBHJ();
|
||
end;
|
||
|
||
procedure TfrmYpBaoJiaMx.v1Column1PropertiesEditValueChanged(Sender: TObject);
|
||
var
|
||
mavlue, FFieldName: string;
|
||
MBiLi, MYlShb, MMmkz, MBjZKS, MWlPrice: Double;
|
||
begin
|
||
mavlue := TcxTextEdit(Sender).EditingText;
|
||
FFieldName := Tv1.Controller.FocusedColumn.DataBinding.FilterFieldName;
|
||
if mavlue = '' then
|
||
mavlue := '0';
|
||
with Order_Sub do
|
||
begin
|
||
edit;
|
||
FieldByName(FFieldName).Value := mavlue;
|
||
post;
|
||
MBiLi := FieldByName('BiLi').AsFloat;
|
||
MYlShb := FieldByName('YlShb').AsFloat;
|
||
MWlPrice := FieldByName('WlPrice').AsFloat;
|
||
end;
|
||
MBjZKS := StrToFloatDef(BjZKS.Text, 0);
|
||
MMmkz := RoundFloat(MBjZKS * MBiLi / 100, 2);
|
||
with Order_Sub do
|
||
begin
|
||
edit;
|
||
FieldByName('Mmkz').Value := MMmkz;
|
||
FieldByName('WlMoney').Value := RoundFloat(MMmkz * MWlPrice / 1000 * (MYlShb + 100) / 100, 2);
|
||
post;
|
||
end;
|
||
tv1.Controller.EditingController.ShowEdit();
|
||
CBHJ();
|
||
end;
|
||
|
||
procedure TfrmYpBaoJiaMx.CustomerNamePropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
|
||
begin
|
||
try
|
||
frmZdyAttachment := TfrmZdyAttachment.Create(Application);
|
||
with frmZdyAttachment do
|
||
begin
|
||
if ShowModal = 1 then
|
||
begin
|
||
CustomerName.Text := Trim(CDS_HZ.fieldbyname('ZDYName').AsString);
|
||
CustomerLevel.Text := Trim(CDS_HZ.fieldbyname('DEFStr6').AsString);
|
||
if Trim(CustomerLevel.Text) = 'A' then
|
||
begin
|
||
ZzCost.Text := '1.5';
|
||
CBHJ();
|
||
end;
|
||
end;
|
||
end;
|
||
finally
|
||
frmZdyAttachment.Free;
|
||
end;
|
||
end;
|
||
|
||
procedure TfrmYpBaoJiaMx.BjZKSExit(Sender: TObject);
|
||
begin
|
||
upWlPb();
|
||
CBHJ();
|
||
end;
|
||
|
||
procedure TfrmYpBaoJiaMx.ScrollBox2Click(Sender: TObject);
|
||
begin
|
||
lrd.SetFocus;
|
||
end;
|
||
|
||
procedure TfrmYpBaoJiaMx.ScrollBox1Click(Sender: TObject);
|
||
begin
|
||
lrd.SetFocus;
|
||
end;
|
||
|
||
end.
|
||
|