D10sxYilanbuyi/B03基础物料仓库/U_BSPrtDyeInList.pas

361 lines
9.7 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_BSPrtDyeInList;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, cxDataStorage,
cxEdit, DB, cxDBData, cxGridCustomTableView, cxGridTableView,
cxGridBandedTableView, cxGridDBBandedTableView, cxGridLevel, cxClasses,
cxControls, cxGridCustomView, cxGridDBTableView, cxGrid, StdCtrls, ComCtrls,
ExtCtrls, ToolWin, cxGridCustomPopupMenu, cxGridPopupMenu, ADODB, DBClient,
cxDropDownEdit, cxCheckBox, RM_Common, RM_Class, RM_e_Xls, RM_Dataset,
RM_System, RM_GridReport, Menus, cxCalendar, cxButtonEdit, cxTextEdit, cxPC,
cxLookAndFeels, cxLookAndFeelPainters, dxSkinsCore, dxSkinsDefaultPainters,
cxNavigator, dxDateRanges, dxBarBuiltInMenu, U_BaseList,
dxScrollbarAnnotations;
type
TfrmBSPrtDyeInList = class(TfrmBaseList)
ToolBar1: TToolBar;
TBRafresh: TToolButton;
TBFind: TToolButton;
TBExport: TToolButton;
TBClose: TToolButton;
Panel1: TPanel;
ADOQueryCmd: TADOQuery;
ADOQueryMain: TADOQuery;
ADOQueryTemp: TADOQuery;
DataSource1: TDataSource;
cxGridPopupMenu1: TcxGridPopupMenu;
Label1: TLabel;
Label2: TLabel;
BegDate: TDateTimePicker;
EndDate: TDateTimePicker;
CDS_Main: TClientDataSet;
RM1: TRMGridReport;
RMDBMain: TRMDBDataSet;
RMXLSExport1: TRMXLSExport;
RMDBHZ: TRMDBDataSet;
CDS_HZ: TClientDataSet;
CDS_PRT: TClientDataSet;
TBDel: TToolButton;
PopupMenu1: TPopupMenu;
N1: TMenuItem;
N2: TMenuItem;
TBAdd: TToolButton;
TBEdit: TToolButton;
Label3: TLabel;
Label5: TLabel;
Label8: TLabel;
Label12: TLabel;
P_Code: TEdit;
P_spec: TEdit;
IOType: TComboBox;
cxGrid2: TcxGrid;
Tv1: TcxGridDBTableView;
v1Column6: TcxGridDBColumn;
v1Column2: TcxGridDBColumn;
v1Column4: TcxGridDBColumn;
v1Column14: TcxGridDBColumn;
v2Column1: TcxGridDBColumn;
v1Column8: TcxGridDBColumn;
v2Column6: TcxGridDBColumn;
v1Column12: TcxGridDBColumn;
cxGrid2Level1: TcxGridLevel;
v1Column10: TcxGridDBColumn;
Label10: TLabel;
BatchNo: TEdit;
v1Column20: TcxGridDBColumn;
ToolButton1: TToolButton;
BPIOID: TEdit;
Tv1Column1: TcxGridDBColumn;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormCreate(Sender: TObject);
procedure TBRafreshClick(Sender: TObject);
procedure ConNoMChange(Sender: TObject);
procedure TBCloseClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure TBExportClick(Sender: TObject);
procedure TBFindClick(Sender: TObject);
procedure N1Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure TBDelClick(Sender: TObject);
procedure TBAddClick(Sender: TObject);
procedure TBEditClick(Sender: TObject);
procedure BPIOIDChange(Sender: TObject);
procedure P_specChange(Sender: TObject);
procedure FromCoNameChange(Sender: TObject);
procedure cxTabControl1Change(Sender: TObject);
procedure ToolButton1Click(Sender: TObject);
private
procedure InitGrid();
procedure setStatus();
{ Private declarations }
public
canshu1, FSTKName, canshu3: string;
{ Public declarations }
end;
implementation
uses
U_DataLink, U_RTFun, U_BSPrtDyeInEdit;
{$R *.dfm}
procedure TfrmBSPrtDyeInList.setStatus();
begin
end;
procedure TfrmBSPrtDyeInList.FormClose(Sender: TObject; var Action: TCloseAction);
begin
inherited;
Action := caFree;
end;
procedure TfrmBSPrtDyeInList.FormCreate(Sender: TObject);
begin
inherited;
EndDate.DateTime := SGetServerDate(ADOQueryTemp);
BegDate.DateTime := EndDate.DateTime - 30;
canshu1 := Trim(self.fParameters1);
FSTKName := Trim(self.fParameters2);
canshu3 := Trim(self.fParameters3);
end;
procedure TfrmBSPrtDyeInList.InitGrid();
begin
try
ADOQueryMain.DisableControls;
with ADOQueryMain do
begin
Filtered := False;
Close;
sql.Clear;
sql.Add(' select A.* ');
sql.Add(' from BS_Product_IO A');
sql.add(' where A.IOTime>=''' + Trim(FormatDateTime('yyyy-MM-dd', BegDate.DateTime)) + '''');
sql.Add(' and A.IOTime<''' + Trim(FormatDateTime('yyyy-MM-dd', enddate.DateTime + 1)) + '''');
sql.Add(' and isnull(STKNAME,'''')=''' + Trim(FSTKName) + '''');
SQL.Add(' and IOFlag=''<27><><EFBFBD><EFBFBD>'' ');
SQL.Add(' order by IOTime desc');
Open;
end;
SDofilter(ADOQueryMain, SGetFilters(Panel1, 1, 2));
SCreateCDS(ADOQueryMain, CDS_Main);
SInitCDSData(ADOQueryMain, CDS_Main);
finally
ADOQueryMain.EnableControls;
end;
end;
procedure TfrmBSPrtDyeInList.TBRafreshClick(Sender: TObject);
begin
BegDate.SetFocus;
InitGrid();
end;
procedure TfrmBSPrtDyeInList.ToolButton1Click(Sender: TObject);
begin
WriteCxGrid(Self.Caption, Tv1, 'Ⱦɫ<C8BE><C9AB><EFBFBD><EFBFBD><EFBFBD>ֿ<EFBFBD>');
end;
procedure TfrmBSPrtDyeInList.ConNoMChange(Sender: TObject);
begin
if ADOQueryMain.Active then
begin
SDofilter(ADOQueryMain, SGetFilters(Panel1, 1, 2));
end;
end;
procedure TfrmBSPrtDyeInList.TBCloseClick(Sender: TObject);
begin
Close;
end;
procedure TfrmBSPrtDyeInList.FormShow(Sender: TObject);
begin
inherited;
ReadCxGrid(Self.Caption, Tv1, 'Ⱦɫ<C8BE><C9AB><EFBFBD><EFBFBD><EFBFBD>ֿ<EFBFBD>');
setStatus();
InitGrid();
end;
procedure TfrmBSPrtDyeInList.TBExportClick(Sender: TObject);
begin
if ADOQueryMain.IsEmpty then
exit;
TcxGridToExcel(FSTKName + '<27><><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>', cxGrid2);
end;
procedure TfrmBSPrtDyeInList.TBFindClick(Sender: TObject);
begin
if ADOQueryMain.Active then
begin
SDofilter(ADOQueryMain, SGetFilters(Panel1, 1, 2));
SCreateCDS(ADOQueryMain, CDS_Main);
SInitCDSData(ADOQueryMain, CDS_Main);
end;
end;
procedure TfrmBSPrtDyeInList.N1Click(Sender: TObject);
begin
SelOKNo(CDS_Main, True);
end;
procedure TfrmBSPrtDyeInList.N2Click(Sender: TObject);
begin
SelOKNo(CDS_Main, False);
end;
procedure TfrmBSPrtDyeInList.TBDelClick(Sender: TObject);
begin
if CDS_Main.IsEmpty then
Exit;
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('exec P_BS_Product_In_Del ');
// Sql.Add(' @BPIOIDS=' + quotedstr(Trim(CDS_Main.fieldbyname('BPIOID').AsString)));
// Sql.Add(',@DCode=' + quotedstr(Trim(DCode)));
// Sql.Add(',@DName=' + quotedstr(Trim(DName)));
// Open;
// end;
// if ADOQueryCmd.FieldByName('intReturn').AsInteger = -1 then
// raise Exception.Create(pchar(trim(ADOQueryCmd.FieldByName('ShowMsg').AsString)));
with ADOQueryCmd do
begin
Close;
sql.Clear;
sql.Add(' SELECT isnull(P_Code,''''),isnull(P_Spec,''''), isnull(BatchNo,''''),isnull(QtyUnit,'''') ');
SQL.Add(',sum(IOQtyFlag*qty)qty FROM BS_Product_IO WHERE ');
sql.Add(' isnull(stkName,'''')=''' + Trim(FstkName) + '''');
SQL.Add('AND p_Code=' + QuotedStr(CDS_Main.fieldbyname('p_Code').AsString));
SQL.Add('AND BatchNo=' + QuotedStr(CDS_Main.fieldbyname('BatchNo').AsString));
SQL.Add(' group by isnull(P_Code,''''),isnull(P_Spec,''''), isnull(BatchNo,''''),isnull(QtyUnit,'''')');
// showMessage(SQL.Text);
OPEN;
end;
if ADOQueryCmd.FieldByName('Qty').Value < CDS_Main.FieldByName('Qty').Value then
begin
raise Exception.Create('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڿ<EFBFBD><DABF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɾ<EFBFBD><C9BE><EFBFBD><EFBFBD>');
end
else
begin
with ADOQueryCmd do
begin
Close;
sql.Clear;
SQL.Add('insert into BS_Product_IO_Del select * from BS_Product_IO where BPIOID = ' + QuotedStr(Trim(CDS_Main.FieldByName('BPIOID').value)));
SQL.Add('Delete BS_Product_IO where BPIOID = ' + QuotedStr(Trim(CDS_Main.FieldByName('BPIOID').value)));
ExecSQL;
end;
end;
ADOQueryCmd.Connection.CommitTrans;
CDS_Main.Delete;
except
ADOQueryCmd.Connection.RollbackTrans;
application.MessageBox(PChar(Exception(ExceptObject).Message), '<27><>ʾ<EFBFBD><CABE>Ϣ', 0);
end;
end;
procedure TfrmBSPrtDyeInList.TBAddClick(Sender: TObject);
begin
try
frmBSPrtDyeInEdit := TfrmBSPrtDyeInEdit.Create(Application);
with frmBSPrtDyeInEdit do
begin
FBCId := '';
frmBSPrtDyeInEdit.canshu3 := Trim(Self.canshu3);
FSTKName := Self.FSTKName;
if ShowModal = 1 then
begin
Self.InitGrid();
end;
end;
finally
frmBSPrtDyeInEdit.Free;
end;
end;
procedure TfrmBSPrtDyeInList.TBEditClick(Sender: TObject);
begin
if CDS_Main.IsEmpty then
Exit;
with ADOQueryTemp do
begin
Close;
Sql.Clear;
Sql.Add('exec P_BS_Product_In_Edit ');
Sql.Add(' @BPIOIDS=' + quotedstr(Trim(CDS_Main.fieldbyname('BPIOID').AsString)));
Sql.Add(',@DCode=' + quotedstr(Trim(DCode)));
Sql.Add(',@DName=' + quotedstr(Trim(DName)));
Open;
end;
if ADOQueryTemp.FieldByName('intReturn').AsInteger = -1 then
begin
Application.MessageBox(PChar(ADOQueryTemp.fieldbyname('ShowMsg').AsString), '<27><>ʾ', 0);
exit;
end;
try
frmBSPrtDyeInEdit := TfrmBSPrtDyeInEdit.Create(Application);
with frmBSPrtDyeInEdit do
begin
FBCId := Trim(CDS_Main.fieldbyname('BPIOID').AsString);
TBDel.Visible := False;
TBAdd.Visible := False;
FSTKName := Self.FSTKName;
if ShowModal = 1 then
begin
Self.InitGrid();
end;
end;
finally
frmBSPrtDyeInEdit.Free;
end;
end;
procedure TfrmBSPrtDyeInList.BPIOIDChange(Sender: TObject);
begin
if Length(Trim(BPIOID.Text)) < 4 then
begin
if Trim(BPIOID.Text) <> '' then
Exit;
end;
TBFind.Click;
end;
procedure TfrmBSPrtDyeInList.P_specChange(Sender: TObject);
begin
TBFind.Click;
end;
procedure TfrmBSPrtDyeInList.FromCoNameChange(Sender: TObject);
begin
TBFind.Click;
end;
procedure TfrmBSPrtDyeInList.cxTabControl1Change(Sender: TObject);
begin
InitGrid();
end;
end.