D7zzHanglin/机物料仓库(GYJWLCK.dll)/U_ShaOutPut.pas
DESKTOP-E401PHE\Administrator 4c4c37570c 0
2025-08-06 16:42:07 +08:00

482 lines
14 KiB
ObjectPascal
Raw 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_ShaOutPut;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, cxDataStorage,
cxEdit, DB, cxDBData, cxCalendar, cxDropDownEdit, ComCtrls, ToolWin,
cxGridLevel, cxGridCustomTableView, cxGridTableView, cxGridDBTableView,
cxClasses, cxControls, cxGridCustomView, cxGrid, cxGridCustomPopupMenu,
cxGridPopupMenu, ADODB, DBClient, cxButtonEdit, cxTextEdit, cxSpinEdit,
StdCtrls;
type
TfrmShaOutPut = class(TForm)
ToolBar1: TToolBar;
TBAdd: TToolButton;
TBDel: TToolButton;
TBSave: TToolButton;
TBClose: TToolButton;
DataSource3: TDataSource;
CDS_Sub: TClientDataSet;
ADOQueryCmd: TADOQuery;
ADOQueryMain: TADOQuery;
ADOQueryTemp: TADOQuery;
cxGridPopupMenu2: TcxGridPopupMenu;
cxGrid2: TcxGrid;
Tv1: TcxGridDBTableView;
v1Column6: TcxGridDBColumn;
v1Column2: TcxGridDBColumn;
v1CRType: TcxGridDBColumn;
v2Column1: TcxGridDBColumn;
v1Column8: TcxGridDBColumn;
v2Column6: TcxGridDBColumn;
v1Column3: TcxGridDBColumn;
v1Column12: TcxGridDBColumn;
cxGrid2Level1: TcxGridLevel;
v1Column1: TcxGridDBColumn;
v1Column10: TcxGridDBColumn;
v1Column4: TcxGridDBColumn;
v1Column5: TcxGridDBColumn;
v1Column7: TcxGridDBColumn;
v1Column9: TcxGridDBColumn;
v1Column11: TcxGridDBColumn;
v1Column13: TcxGridDBColumn;
v1Column14: TcxGridDBColumn;
v1Column15: TcxGridDBColumn;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure TBAddClick(Sender: TObject);
procedure TBCloseClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure TBDelClick(Sender: TObject);
procedure TBSaveClick(Sender: TObject);
procedure Tv1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
procedure v1Column7PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
procedure v1Column9PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
procedure v2Column6PropertiesEditValueChanged(Sender: TObject);
procedure v1Column15PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
private
{ Private declarations }
function SaveCKData(): Boolean;
public
{ Public declarations }
FBCId: string;
end;
var
frmShaOutPut: TfrmShaOutPut;
implementation
uses
U_DataLink, U_RTFun, U_ZDYHelp, U_ShaKCSelList, U_KHList;
{$R *.dfm}
procedure TfrmShaOutPut.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree;
end;
procedure TfrmShaOutPut.TBAddClick(Sender: TObject);
begin
try
frmShaKCSelList := TfrmShaKCSelList.Create(Application);
with frmShaKCSelList do
begin
ToolButton1.Visible := True;
if ShowModal = 1 then
begin
frmShaKCSelList.CDS_Main.DisableControls;
with frmShaKCSelList.CDS_Main do
begin
First;
while frmShaKCSelList.CDS_Main.Locate('SSel', True, []) do
begin
with Self.CDS_Sub do
begin
Append;
FieldByName('CRTime').Value := Trim(FormatDateTime('yyyy-MM-dd', Now));
FieldByName('FactoryName').Value := frmShaKCSelList.CDS_Main.fieldbyname('FactoryName').Value;
FieldByName('FactoryNo').Value := frmShaKCSelList.CDS_Main.fieldbyname('FactoryNo').Value;
FieldByName('SPName').Value := frmShaKCSelList.CDS_Main.fieldbyname('SPName').Value;
FieldByName('SPCode').Value := frmShaKCSelList.CDS_Main.fieldbyname('SPCode').Value;
FieldByName('CPID').Value := frmShaKCSelList.CDS_Main.fieldbyname('CPID').Value;
FieldByName('SPSpec').Value := frmShaKCSelList.CDS_Main.fieldbyname('SPSpec').Value;
FieldByName('SXPinPai').Value := frmShaKCSelList.CDS_Main.fieldbyname('SXPinPai').Value;
FieldByName('QtyUnit').Value := frmShaKCSelList.CDS_Main.fieldbyname('QtyUnit').Value;
FieldByName('Qty').Value := frmShaKCSelList.CDS_Main.fieldbyname('MXKCQty').Value;
FieldByName('FZSPID').Value := frmShaKCSelList.CDS_Main.fieldbyname('SPID').Value;
FieldByName('BatchNo').Value := frmShaKCSelList.CDS_Main.fieldbyname('BatchNo').Value;
FieldByName('CRType').Value := '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>';
FieldByName('Price').Value := frmShaKCSelList.CDS_Main.fieldbyname('Price').Value;
FieldByName('Money').Value := frmShaKCSelList.CDS_Main.fieldbyname('KCMoney').Value;
end;
frmShaKCSelList.CDS_Main.Delete;
end;
end;
frmShaKCSelList.CDS_Main.EnableControls;
end;
end;
finally
frmShaKCSelList.Free;
end;
end;
function TfrmShaOutPut.SaveCKData(): Boolean;
var
FCRID, Maxno, FSPID, MaxPYNo, FPYID, FFString: string;
begin
try
ADOQueryCmd.Connection.BeginTrans;
CDS_Sub.DisableControls;
with CDS_Sub do
begin
First;
while not eof do
begin
with ADOQueryTemp do
begin
Close;
sql.Clear;
sql.Add('select * from CK_SXPB_CR where SPID=''' + Trim(CDS_Sub.fieldbyname('SPID').AsString) + '''');
Open;
end;
FSPID := Trim(ADOQueryTemp.fieldbyname('SPID').AsString);
if Trim(FSPID) = '' then
begin
if GetLSNo(ADOQueryCmd, Maxno, 'JC', 'CK_SXPB_CR', 3, 1) = False then
begin
CDS_Sub.EnableControls;
Result := False;
ADOQueryCmd.Connection.RollbackTrans;
Application.MessageBox(<><C8A1><EFBFBD><EFBFBD><EFBFBD>ϳ<EFBFBD><CFB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>!', '<27><>ʾ', 0);
Exit;
end;
end
else
begin
Maxno := Trim(FSPID);
end;
with ADOQueryCmd do
begin
Close;
sql.Clear;
sql.Add('select * from CK_SXPB_CR where SPID=''' + Trim(Maxno) + '''');
Open;
end;
with ADOQueryCmd do
begin
if Trim(FSPID) = '' then
begin
Append;
end
else
begin
Edit;
end;
FieldByName('SPID').Value := Trim(Maxno);
FieldByName('FZSPID').Value := Trim(CDS_Sub.fieldbyname('FZSPID').AsString);
FieldByName('FactoryNo').Value := Trim(CDS_Sub.fieldbyname('FactoryNo').AsString);
FieldByName('FactoryName').Value := Trim(CDS_Sub.fieldbyname('FactoryName').AsString);
FieldByName('ToFactoryNo').Value := Trim(CDS_Sub.fieldbyname('ToFactoryNo').AsString);
FieldByName('CPID').Value := Trim(CDS_Sub.fieldbyname('CPID').AsString);
FieldByName('CRFlag').Value := '<27><><EFBFBD><EFBFBD>';
FieldByName('CRQtyFlag').Value := -1;
RTSetSaveDataCDS(ADOQueryCmd, Tv1, CDS_Sub, 'CK_SXPB_CR', 2);
FieldByName('CKName').Value := '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>';
if Trim(FSPID) = '' then
FieldByName('Filler').Value := Trim(DName)
else
begin
FieldByName('Editer').Value := Trim(DName);
FieldByName('EditTime').Value := SGetServerDate(ADOQueryTemp);
end;
Post;
end;
with ADOQueryCmd do
begin
Close;
sql.Clear;
sql.Add('Update CK_SXPB_CR Set MXKCQty=(select sum(isnull(Qty,0)*CRQtyFlag) from CK_SXPB_CR A where A.FZSPID=CK_SXPB_CR.SPID and A.ZFFlag=0)');
sql.Add(',MXKCPiQty=(select sum(isnull(PiQty,0)*CRQtyFlag) from CK_SXPB_CR A where A.FZSPID=CK_SXPB_CR.SPID and A.ZFFlag=0)');
sql.Add(' where SPID=''' + Trim(CDS_Sub.fieldbyname('FZSPID').AsString) + '''');
ExecSQL;
end;
with ADOQueryTemp do
begin
Close;
sql.Clear;
sql.Add('select * from CK_SXPB_CR where SPID=''' + Trim(CDS_Sub.fieldbyname('FZSPID').AsString) + '''');
Open;
end;
if ADOQueryTemp.FieldByName('MXKCQty').Value < 0 then
begin
FFString := Trim(CDS_Sub.fieldbyname('FZSPID').AsString);
CDS_Sub.EnableControls;
ADOQueryCmd.Connection.RollbackTrans;
Application.MessageBox('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڿ<EFBFBD><DABF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܱ<EFBFBD><DCB1><EFBFBD>!', '<27><>ʾ', 0);
CDS_Sub.Locate('FZSPID', FFString, []);
Exit;
end;
Edit;
FieldByName('SPID').Value := Trim(Maxno);
Post;
Next;
end;
end;
CDS_Sub.EnableControls;
ADOQueryCmd.Connection.CommitTrans;
Result := True;
except
Result := False;
ADOQueryCmd.Connection.RollbackTrans;
Application.MessageBox('<27><><EFBFBD><EFBFBD><EFBFBD>쳣!', '<27><>ʾ', 0);
end;
end;
procedure TfrmShaOutPut.TBCloseClick(Sender: TObject);
begin
WriteCxGrid('<27><><EFBFBD><EFBFBD><EFBFBD>ϳ<EFBFBD><CFB3><EFBFBD><EFBFBD>Ǽ<EFBFBD>', Tv1, '<27><><EFBFBD><EFBFBD><EFBFBD>ϲֿ<CFB2>');
Close;
end;
procedure TfrmShaOutPut.FormShow(Sender: TObject);
begin
ReadCxGrid('<27><><EFBFBD><EFBFBD><EFBFBD>ϳ<EFBFBD><CFB3><EFBFBD><EFBFBD>Ǽ<EFBFBD>', Tv1, '<27><><EFBFBD><EFBFBD><EFBFBD>ϲֿ<CFB2>');
with ADOQueryTemp do
begin
Close;
sql.Clear;
sql.Add(' select A.* ');
sql.Add(' from CK_SXPB_CR A');
sql.Add(' where SPID=''' + Trim(FBCId) + '''');
Open;
end;
SCreateCDS20(ADOQueryTemp, CDS_Sub);
SInitCDSData20(ADOQueryTemp, CDS_Sub);
end;
procedure TfrmShaOutPut.TBDelClick(Sender: TObject);
begin
if CDS_Sub.IsEmpty then
Exit;
if Trim(CDS_Sub.fieldbyname('SPID').AsString) <> '' then
begin
if Application.MessageBox(<><C8B7>Ҫɾ<D2AA><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>', '<27><>ʾ', 32 + 4) <> IDYES then
Exit;
try
ADOQueryCmd.Connection.BeginTrans;
with ADOQueryCmd do
begin
Close;
sql.Clear;
sql.Add(' delete CK_SXPB_CR where SPID=''' + Trim(CDS_Sub.fieldbyname('SPID').AsString) + '''');
sql.Add('Update CK_SXPB_CR Set MXKCQty=(select sum(isnullQty,0)*CRQtyFlag) from CK_SXPB_CR A where A.FZSPID=CK_SXPB_CR.SPID and A.ZFFlag=0)');
sql.Add(',MXKCPiQty=(select sum(isnull(PiQty,0)*CRQtyFlag) from CK_SXPB_CR A where A.FZSPID=CK_SXPB_CR.SPID and A.ZFFlag=0 )');
sql.Add(' where SPID=''' + Trim(CDS_Sub.fieldbyname('FZSPID').AsString) + '''');
ExecSQL;
end;
ADOQueryCmd.Connection.CommitTrans;
except
ADOQueryCmd.Connection.RollbackTrans;
Application.MessageBox(<><C9BE><EFBFBD>쳣!', '<27><>ʾ', 0);
end;
end;
CDS_Sub.Delete;
end;
procedure TfrmShaOutPut.TBSaveClick(Sender: TObject);
begin
if CDS_Sub.IsEmpty then
Exit;
if CDS_Sub.Locate('CRTime', null, []) = True then
begin
Application.MessageBox('<27><><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><E4B2BB>Ϊ<EFBFBD><CEAA>!', '<27><>ʾ', 0);
Exit;
end;
if CDS_Sub.Locate('CRType', null, []) = True then
begin
Application.MessageBox('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͳ<EFBFBD><CDB2><EFBFBD>Ϊ<EFBFBD><CEAA>!', '<27><>ʾ', 0);
Exit;
end;
if CDS_Sub.Locate('Qty', null, []) = True then
begin
Application.MessageBox('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>!', '<27><>ʾ', 0);
Exit;
end;
with CDS_Sub do
begin
First;
while not Eof do
begin
if FieldByName('CRType').AsString = '<27><><EFBFBD>۳<EFBFBD><DBB3><EFBFBD>' then
begin
if FieldByName('ToFactoryName').AsString = '' then
begin
Application.MessageBox('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>!', '<27><>ʾ', 0);
Exit;
end;
end;
Next;
end;
end;
if SaveCKData() then
begin
Application.MessageBox('<27><><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD>!', '<27><>ʾ', 0);
//ModalResult:=1;
Exit;
end;
end;
procedure TfrmShaOutPut.Tv1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
FFSPID: string;
begin
if CDS_Sub.IsEmpty then
Exit;
if Trim(CDS_Sub.fieldbyname('SPID').AsString) <> '' then
begin
with ADOQueryTemp do
begin
Close;
sql.Clear;
sql.Add('select * from CK_SXPB_CR where SPID=''' + Trim(CDS_Sub.fieldbyname('SPID').AsString) + '''');
Open;
end;
FFSPID := Trim(ADOQueryTemp.fieldbyname('SPID').AsString);
if Trim(FFSPID) <> '' then
begin
v1CRType.Options.Editing := False;
end
else
begin
v1CRType.Options.Editing := True;
end;
end
else
begin
v1CRType.Options.Editing := True;
end;
end;
procedure TfrmShaOutPut.v1Column7PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
begin
try
frmZDYHelp := TfrmZDYHelp.Create(Application);
with frmZDYHelp do
begin
flag := 'llPerson';
flagname := '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>';
if ShowModal = 1 then
begin
with Self.CDS_Sub do
begin
Edit;
FieldByName('llPerson').Value := Trim(frmZDYHelp.ClientDataSet1.fieldbyname('ZdyName').AsString);
end;
end;
end;
finally
frmZDYHelp.Free;
end;
end;
procedure TfrmShaOutPut.v1Column9PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
begin
try
frmZDYHelp := TfrmZDYHelp.Create(Application);
with frmZDYHelp do
begin
flag := 'llDepartment';
flagname := '<27><><EFBFBD>ò<EFBFBD><C3B2><EFBFBD>';
if ShowModal = 1 then
begin
with Self.CDS_Sub do
begin
Edit;
FieldByName('llDepartment').Value := Trim(frmZDYHelp.ClientDataSet1.fieldbyname('ZdyName').AsString);
end;
end;
end;
finally
frmZDYHelp.Free;
end;
end;
procedure TfrmShaOutPut.v2Column6PropertiesEditValueChanged(Sender: TObject);
var
mvalue, FQty, FPrice, FCostPrice, FMoney, FBBMoney, FFieldName: string;
begin
mvalue := TcxTextEdit(Sender).EditingText;
if Trim(mvalue) = '' then
begin
mvalue := '0';
end;
FFieldName := Trim(Tv1.Controller.FocusedColumn.DataBinding.FilterFieldName);
with CDS_Sub do
begin
Edit;
FieldByName(FFieldName).Value := mvalue;
Post;
end;
FQty := Trim(CDS_Sub.fieldbyname('Qty').AsString);
if Trim(FQty) = '' then
FQty := '0';
FPrice := Trim(CDS_Sub.fieldbyname('Price').AsString);
if Trim(FPrice) = '' then
FPrice := '0';
FCostPrice := Trim(CDS_Sub.fieldbyname('CostPrice').AsString);
if Trim(FCostPrice) = '' then
FCostPrice := '0';
FMoney := Trim(CDS_Sub.fieldbyname('Money').AsString);
if Trim(FMoney) = '' then
FMoney := '0';
FMoney := FloatToStr(StrToFloat(FQty) * StrToFloat(FPrice) + StrToFloat(FCostPrice));
with CDS_Sub do
begin
Edit;
FieldByName('Money').Value := StrToFloat(FMoney);
Post;
end;
tv1.Controller.EditingController.ShowEdit();
end;
procedure TfrmShaOutPut.v1Column15PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
begin
try
frmKHList := TfrmKHList.Create(Application);
with frmKHList do
begin
if ShowModal = 1 then
begin
with Self.CDS_Sub do
begin
Edit;
FieldByName('ToFactoryNo').Value := Trim(Order_Main.fieldbyname('CoCode').AsString);
FieldByName('ToFactoryName').Value := Trim(Order_Main.fieldbyname('CoName').AsString);
//Post;
end;
end;
end;
finally
frmKHList.Free;
end;
end;
end.