D7szChenfeng/应收应付/U_CostInput.pas
DESKTOP-E401PHE\Administrator ccdaa90a0f 移交
2025-07-22 15:51:47 +08:00

545 lines
13 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_CostInput;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, ToolWin, cxStyles, cxCustomData, cxGraphics, cxFilter,
cxData, cxDataStorage, cxEdit, DB, cxDBData, cxGridLevel, cxClasses,
cxControls, cxGridCustomView, cxGridCustomTableView, cxGridTableView,
cxGridDBTableView, cxGrid, cxGridCustomPopupMenu, cxGridPopupMenu, ADODB,
DBClient, ExtCtrls, StdCtrls, BtnEdit, cxButtonEdit, cxTextEdit,
cxDropDownEdit, cxLookAndFeels, cxLookAndFeelPainters, cxNavigator;
type
TfrmCostInput = class(TForm)
DataSource1: TDataSource;
YFSub: TClientDataSet;
cxGridPopupMenu1: TcxGridPopupMenu;
ToolBar1: TToolBar;
TSave: TToolButton;
TBClose: TToolButton;
ToolBar2: TToolBar;
TADD: TToolButton;
TDEl: TToolButton;
Panel1: TPanel;
cxGrid1: TcxGrid;
Tv1: TcxGridDBTableView;
v1P_Spec: TcxGridDBColumn;
v1Qty: TcxGridDBColumn;
v1Price: TcxGridDBColumn;
v1QtyUnit: TcxGridDBColumn;
v1Money: TcxGridDBColumn;
v1note: TcxGridDBColumn;
cxGridLevel1: TcxGridLevel;
Label1: TLabel;
YFID: TEdit;
Label2: TLabel;
Label3: TLabel;
CRTime: TDateTimePicker;
Note: TMemo;
PayMent: TBtnEditA;
FactoryName: TBtnEditA;
Label4: TLabel;
Label6: TLabel;
ADOQueryTmp: TADOQuery;
ADOQueryCmd: TADOQuery;
Label8: TLabel;
SYRName: TBtnEditA;
Label9: TLabel;
Money: TEdit;
Label10: TLabel;
HuiLv: TEdit;
BZType: TComboBox;
Label11: TLabel;
BBMoney: TEdit;
v1Column1: TcxGridDBColumn;
v1Column2: TcxGridDBColumn;
v1Column3: TcxGridDBColumn;
Label7: TLabel;
Label12: TLabel;
Label5: TLabel;
ishs: TComboBox;
YFName: TBtnEditA;
cxStyleRepository1: TcxStyleRepository;
cxStyle1: TcxStyle;
procedure TBCloseClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure TSaveClick(Sender: TObject);
procedure FactoryNameBtnClick(Sender: TObject);
procedure PayMentBtnClick(Sender: TObject);
procedure v1P_SpecPropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
procedure v1QtyUnitPropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
procedure TADDClick(Sender: TObject);
procedure TDElClick(Sender: TObject);
procedure v1QtyPropertiesEditValueChanged(Sender: TObject);
procedure SYRNameBtnClick(Sender: TObject);
procedure v1Column3PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
procedure HuiLvKeyPress(Sender: TObject; var Key: Char);
procedure Panel1Click(Sender: TObject);
procedure HuiLvExit(Sender: TObject);
procedure v1MoneyPropertiesEditValueChanged(Sender: TObject);
procedure YFNameBtnClick(Sender: TObject);
private
procedure initGrid();
procedure SaveDate();
procedure HJJE();
{ Private declarations }
public
FYFID: string;
{ Public declarations }
end;
var
frmCostInput: TfrmCostInput;
implementation
uses
U_Fun10, U_ZDYHelp, U_ZdyAttachment, U_dataLink, U_ZdyAttachGYS, U_CPManageSel;
{$R *.dfm}
procedure TfrmCostInput.HJJE();
var
FMoney, FHuiLv, FBBMoney: double;
begin
if TV1.DataController.Summary.FooterSummaryValues[1] <> NULL then
FMoney := TV1.DataController.Summary.FooterSummaryValues[1]
else
FMoney := 0;
FHuiLv := strtofloat(HuiLv.Text);
if FHuiLv = 0 then
FHuiLv := 1;
FBBMoney := FHuiLv * FMoney;
Money.Text := floattostr(FMoney);
HuiLv.Text := floattostr(FHuiLv);
BBMoney.Text := floattostr(FBBMoney);
end;
procedure TfrmCostInput.SaveDate();
var
MaxYFSID, MaxYFID: string;
begin
ADOQueryCmd.Connection.BeginTrans;
try
if trim(FYFID) = '' then
begin
if GetLSNo(ADOQueryTmp, MaxYFID, 'SK', 'YF_Money_CR_Sub', 4, 1) = False then
begin
Application.MessageBox(<><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD>', '<27><>ʾ', 0);
Exit;
end;
YFID.Text := MaxYFID;
end
else
begin
MaxYFID := trim(FYFID);
end;
with ADOQueryCmd do
begin
close;
sql.Clear;
sql.add('select * from YF_Money_CR where YFID=' + quotedstr(FYFID));
open;
end;
with ADOQueryCmd do
begin
if trim(FYFID) = '' then
begin
append;
Fieldbyname('YFID').value := trim(MaxYFID);
FieldByName('CRType').Value := '<27><><EFBFBD>õǼ<C3B5>';
FieldByName('CRFlag').Value := '<27><><EFBFBD>ù<EFBFBD><C3B9><EFBFBD>';
FieldByName('QtyFlag').Value := -1;
FieldByName('status').Value := '0';
FieldByName('Filler').Value := Trim(DName);
end
else
begin
edit;
FieldByName('Editer').Value := Trim(DName);
FieldByName('EditTime').Value := SGetServerDateTime(ADOQueryTmp);
end;
SSetsaveSqlnew(ADOQueryCmd, 'YF_Money_CR', panel1, 0);
post;
end;
with YFSub do
begin
first;
while not eof do
begin
if fieldbyname('YFSID').AsString = '' then
begin
if GetLSNo(ADOQueryTmp, MaxYFSID, 'SKS', 'YF_Money_CR_Sub', 4, 1) = False then
begin
Application.MessageBox(<><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD>', '<27><>ʾ', 0);
Exit;
end;
end
else
begin
MaxYFSID := YFSub.fieldbyname('YFSID').AsString;
end;
with ADOQueryCmd do
begin
close;
sql.Clear;
sql.add('select * from YF_Money_CR_Sub where YFSID=' + Quotedstr(trim(MaxYFSID)));
open;
end;
if ADOQueryCmd.IsEmpty then
begin
ADOQueryCmd.append;
ADOQueryCmd.Fieldbyname('YFSID').value := trim(MaxYFSID);
ADOQueryCmd.Fieldbyname('YFID').value := trim(MaxYFID);
end
else
begin
ADOQueryCmd.edit;
end;
SSetSaveDataCDSNew(ADOQueryCmd, Tv1, YFSub, 'YF_Money_CR_Sub', 0);
ADOQueryCmd.Post;
next;
end;
end;
ADOQueryCmd.Connection.CommitTrans;
application.MessageBox('<27><><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD>', '<27><>ʾ');
Modalresult := 1;
except
ADOQueryCmd.Connection.RollbackTrans;
application.MessageBox('<27><><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD>', '<27><>ʾ', MB_ICONERROR);
end;
end;
procedure TfrmCostInput.initGrid();
begin
with ADOQueryTmp do
begin
close;
sql.Clear;
sql.Add('select * from YF_Money_CR where YFID=' + quotedstr(trim(FYFID)));
open;
end;
if ADOQueryTmp.isempty = False then
begin
SCSHDataNew(ADOQueryTmp, Panel1, 0);
end
else
begin
HuiLv.Text := '1';
CRTime.DateTime := SGetServerDate(ADOQueryTmp);
end;
with ADOQueryTmp do
begin
close;
sql.Clear;
sql.Add('select * from YF_Money_CR_Sub where YFID=''' + trim(FYFID) + '''');
open;
end;
SCreateCDS20(ADOQueryTmp, YFSub);
SInitCDSData20(ADOQueryTmp, YFSub);
end;
procedure TfrmCostInput.TBCloseClick(Sender: TObject);
begin
WriteCxGrid(trim(self.Caption), Tv1, '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>');
Close;
end;
procedure TfrmCostInput.FormShow(Sender: TObject);
begin
ReadCxGrid(trim(self.Caption), Tv1, '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>');
initGrid();
end;
procedure TfrmCostInput.TSaveClick(Sender: TObject);
begin
yfname.SetFocus;
if YFSub.Locate('KXType', null, []) then
begin
application.MessageBox('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͳ<EFBFBD><CDB2><EFBFBD>Ϊ<EFBFBD><CEAA>', '<27><>ʾ');
exit;
end;
if YFSub.Locate('KXType', '', []) then
begin
application.MessageBox('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͳ<EFBFBD><CDB2><EFBFBD>Ϊ<EFBFBD><CEAA>', '<27><>ʾ');
exit;
end;
if trim(FactoryName.Text) = '' then
begin
application.MessageBox('<27>Է<EFBFBD><D4B7><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>', '<27><>ʾ');
exit;
end;
SaveDate();
end;
procedure TfrmCostInput.FactoryNameBtnClick(Sender: TObject);
begin
try
frmZdyAttachGYS := TfrmZdyAttachGYS.Create(Application);
with frmZdyAttachGYS do
begin
if ShowModal = 1 then
begin
FactoryName.Text := Trim(CDS_HZ.fieldbyname('CoName').AsString);
end;
end;
finally
frmZdyAttachGYS.Free;
end;
// try
// frmZdyAttachment:=TfrmZdyAttachment.Create(Application);
// with frmZdyAttachment do
// begin
// if ShowModal=1 then
// begin
// FactoryName.Text:=Trim(CDS_HZ.fieldbyname('CoName').AsString);
// end;
// end;
// finally
// frmZdyAttachment.Free;
// end;
end;
procedure TfrmCostInput.PayMentBtnClick(Sender: TObject);
begin
try
frmZDYHelp := TfrmZDYHelp.Create(Application);
with frmZDYHelp do
begin
flag := 'PayMent';
flagname := '<27><><EFBFBD>ʽ';
if ShowModal = 1 then
begin
PayMent.Text := Trim(ClientDataSet1.fieldbyname('ZDYName').AsString);
end;
end;
finally
frmZDYHelp.Free;
end;
end;
procedure TfrmCostInput.v1P_SpecPropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
begin
try
frmZDYHelp := TfrmZDYHelp.Create(Application);
with frmZDYHelp do
begin
flag := 'FYKXType';
flagname := '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>';
if ShowModal = 1 then
begin
Self.YFSub.Edit;
Self.YFSub.FieldByName('KXType').Value := Trim(ClientDataSet1.fieldbyname('ZDYName').AsString);
end;
end;
finally
frmZDYHelp.Free;
end;
end;
procedure TfrmCostInput.v1QtyUnitPropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
begin
try
frmZDYHelp := TfrmZDYHelp.Create(Application);
with frmZDYHelp do
begin
flag := 'FYQtyUnit';
flagname := '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ';
if ShowModal = 1 then
begin
Self.YFSub.Edit;
Self.YFSub.FieldByName('QtyUnit').Value := Trim(ClientDataSet1.fieldbyname('ZDYName').AsString);
end;
end;
finally
frmZDYHelp.Free;
end;
end;
procedure TfrmCostInput.TADDClick(Sender: TObject);
begin
with YFSub do
begin
Append;
FieldByName('Qty').Value := 0;
FieldByName('Price').Value := 0;
FieldByName('MxMoney').Value := 0;
Post;
end;
end;
procedure TfrmCostInput.TDElClick(Sender: TObject);
begin
if YFSub.IsEmpty then
exit;
if application.MessageBox(<><C8B7>Ҫɾ<D2AA><C9BE><EFBFBD><EFBFBD>', '<27><>ʾ', 1) = 2 then
exit;
with ADOQueryTmp do
begin
close;
sql.clear;
sql.add('delete from YF_Money_CR_Sub where YFSID=''' + trim(YFSub.fieldbyname('YFSID').asstring) + ''' ');
execsql;
end;
YFSub.delete;
end;
procedure TfrmCostInput.v1QtyPropertiesEditValueChanged(Sender: TObject);
var
mvalue, FFieldName: string;
FQty, FPrice, FMxMoney: double;
begin
mvalue := TcxTextEdit(Sender).EditingText;
FFieldName := Trim(Tv1.Controller.FocusedColumn.DataBinding.FilterFieldName);
if Trim(mvalue) = '' then
begin
mvalue := '0';
end;
with YFSub do
begin
Edit;
FieldByName(FFieldName).Value := Trim(mvalue);
Post;
end;
with YFSub do
begin
Edit;
FQty := FieldByName('Qty').AsFloat;
FPrice := FieldByName('Price').AsFloat;
Post;
end;
FMxMoney := strtofloat(format('%.2f', [FQty * FPrice]));
with YFSub do
begin
Edit;
FieldByName(FFieldName).Value := Trim(mvalue);
FieldbyName('MxMoney').Value := FMxMoney;
Post;
end;
tv1.Controller.EditingController.ShowEdit();
HJJE();
end;
procedure TfrmCostInput.SYRNameBtnClick(Sender: TObject);
begin
try
frmZDYHelp := TfrmZDYHelp.Create(Application);
with frmZDYHelp do
begin
flag := 'SYRName';
flagname := '<27><>˾̧ͷ';
if Trim(flag) = 'SYRName' then
begin
flag := 'OrdDefStr2';
V1Name.Caption := '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>';
V1Note.Caption := <><D3A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>';
fnote := True;
end;
if ShowModal = 1 then
begin
SYRName.Text := Trim(ClientDataSet1.fieldbyname('ZdyName').AsString);
end;
end;
finally
frmZDYHelp.Free;
end;
end;
procedure TfrmCostInput.v1Column3PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
begin
try
frmZDYHelp := TfrmZDYHelp.Create(Application);
with frmZDYHelp do
begin
flag := 'MPRTCodeName';
flagname := '<27><>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD>';
if ShowModal = 1 then
begin
with YFSub do
begin
Edit;
FieldByName('CPName').Value := Trim(ClientDataSet1.fieldbyname('ZDYName').AsString);
FieldByName('CPCode').Value := Trim(ClientDataSet1.fieldbyname('ZDYNo').AsString);
end;
end;
end;
finally
frmZDYHelp.Free;
end;
end;
procedure TfrmCostInput.HuiLvKeyPress(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 TfrmCostInput.Panel1Click(Sender: TObject);
begin
yfname.SetFocus;
end;
procedure TfrmCostInput.HuiLvExit(Sender: TObject);
begin
HJJE();
end;
procedure TfrmCostInput.v1MoneyPropertiesEditValueChanged(Sender: TObject);
var
mvalue, FFieldName: string;
begin
mvalue := TcxTextEdit(Sender).EditingText;
FFieldName := Trim(Tv1.Controller.FocusedColumn.DataBinding.FilterFieldName);
if Trim(mvalue) = '' then
begin
mvalue := '0';
end;
with YFSub do
begin
Edit;
FieldByName(FFieldName).Value := Trim(mvalue);
Post;
end;
tv1.Controller.EditingController.ShowEdit();
HJJE();
end;
procedure TfrmCostInput.YFNameBtnClick(Sender: TObject);
begin
try
frmZDYHelp := TfrmZDYHelp.Create(Application);
with frmZDYHelp do
begin
flag := 'YFNameFY';
flagname := '<27><>ĿժҪ';
if ShowModal = 1 then
begin
YFName.Text := Trim(ClientDataSet1.fieldbyname('ZDYName').AsString);
end;
end;
finally
frmZDYHelp.Free;
end;
end;
end.