D7myYunxiang/合同管理(Contract.dll)/U_YpBaoJiaMx.pas
DESKTOP-E401PHE\Administrator 1011cb7292 1
2025-01-20 13:04:03 +08:00

425 lines
12 KiB
ObjectPascal
Raw Blame History

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.