D7myYunxiang/云翔生产管理(MYSC.dll)/U_QCRKInPut_KC.pas

651 lines
17 KiB
ObjectPascal
Raw Permalink Normal View History

2025-01-20 13:04:03 +08:00
unit U_QCRKInPut_KC;
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, cxCalendar,StrUtils, cxDropDownEdit,jpeg,
IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdFTP, cxPC,
cxGridCustomPopupMenu, cxGridPopupMenu, cxGroupBox, cxCheckBox,
RM_Dataset, RM_System, RM_Common, RM_Class, RM_GridReport, Menus;
type
TfrmQCRKInPut_KC = class(TForm)
ToolBar1: TToolBar;
TBClose: TToolButton;
ADOTemp: TADOQuery;
ADOCmd: TADOQuery;
ADOQuery1: TADOQuery;
TBSave: TToolButton;
Panel3: TPanel;
Label34: TLabel;
Label13: TLabel;
Label1: TLabel;
MYCode: TEdit;
CRTime: TDateTimePicker;
MYName: TEdit;
Label11: TLabel;
MYColor: TEdit;
Label12: TLabel;
MYKZ: TEdit;
Label14: TLabel;
MYMF: TEdit;
Label15: TLabel;
Label16: TLabel;
DataSource1: TDataSource;
ClientDataSet1: TClientDataSet;
cxGridPopupMenu1: TcxGridPopupMenu;
Label2: TLabel;
MYColorNo: TEdit;
Label3: TLabel;
Panel1: TPanel;
Panel2: TPanel;
cxGrid1: TcxGrid;
Tv1: TcxGridDBTableView;
v1Column6: TcxGridDBColumn;
v1Column1: TcxGridDBColumn;
v1Column17: TcxGridDBColumn;
v1MQty: TcxGridDBColumn;
cxGrid1Level1: TcxGridLevel;
Label4: TLabel;
GangQty: TEdit;
Label8: TLabel;
MXHZPS: TEdit;
Label17: TLabel;
MXHZKGQty: TEdit;
Label18: TLabel;
MYType: TBtnEditA;
v1Column4: TcxGridDBColumn;
MLID: TEdit;
BPID: TEdit;
DYID: TEdit;
PTID: TEdit;
KgQtyAvg: TEdit;
Label25: TLabel;
QtyAvg: TEdit;
Label5: TLabel;
Label21: TLabel;
Label26: TLabel;
Label19: TLabel;
labMYType: TLabel;
MXHZQty: TEdit;
v1Laster: TcxGridDBColumn;
RM1: TRMGridReport;
CDS_Print: TClientDataSet;
RMDB_Main: TRMDBDataSet;
Label27: TLabel;
Edit1: TEdit;
Panel5: TPanel;
Label28: TLabel;
ComboBox2: TComboBox;
Label29: TLabel;
ComboBox1: TComboBox;
BtnPrt: TButton;
BtnQX: TButton;
Label30: TLabel;
Button3: TButton;
Panel6: TPanel;
Label6: TLabel;
Note: TEdit;
Label31: TLabel;
GYLXName: TEdit;
Button4: TButton;
Button5: TButton;
PopupMenu1: TPopupMenu;
N1: TMenuItem;
Label33: TLabel;
Note2: TEdit;
v1MXNote: TcxGridDBColumn;
procedure TBCloseClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure ShuiXiSuoLvClick(Sender: TObject);
procedure ShuiXiSuoLvJGMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure BtnQXClick(Sender: TObject);
procedure MYNameKeyPress(Sender: TObject; var Key: Char);
procedure v1Column7PropertiesButtonClick(Sender: TObject;
AButtonIndex: Integer);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure BtnPrtClick(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Panel6DblClick(Sender: TObject);
procedure N1Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
private
procedure InitData();
procedure InitMXData();
function SaveData():Boolean;
procedure GetHZData();
procedure InitColor();
{ Private declarations }
public
canshu1:String;
PState,CopyInt:Integer;
FMainId:String;
FRead:String;
FSaveFlag:string;
{ Public declarations }
end;
var
frmQCRKInPut_KC: TfrmQCRKInPut_KC;
implementation
uses
U_DataLink,U_ZDYHelp,U_RTFun,U_ZDYHelpSel, U_GYSList,U_SCPerson,U_BPZdy_LRGX_CX
,U_QCRKJLList,U_RSColorBig,U_MLMangeRS_GYCX,U_MLMangeRS_CX,U_RTPTColor,U_ZDYCPName;
{$R *.dfm}
procedure TfrmQCRKInPut_KC.TBCloseClick(Sender: TObject);
begin
Close;
end;
procedure TfrmQCRKInPut_KC.InitData();
begin
with ADOQuery1 do
begin
Close;
sql.Clear;
sql.Add(' select A.* ');
sql.Add(' from CK_MYSC_CR A ');
sql.Add(' where A.MYID='''+Trim(FMainId)+'''');
Open;
end;
SCSHDataNew(ADOQuery1,Panel3,2);
SCSHDataNew(ADOQuery1,Panel2,2);
labMYType.Caption:=Trim(ADOQuery1.fieldbyname('MYType').AsString);
if Trim(labMYType.Caption)='' then
begin
labMYType.Caption:=' ';
end;
if PState=0 then
begin
CRTime.Date:=SGetServerDate(ADOTemp);
end;
InitMXData();
GetHZData();
MYCode.SetFocus;
if Trim(FMainId)<>'' then
begin
InitColor();
end;
end;
procedure TfrmQCRKInPut_KC.InitMXData();
begin
with ADOTemp do
begin
Close;
sql.Clear;
sql.Add('select A.*,Laster=isnull(Editer,Filler) ');
sql.Add(',RCGangNo1=(case when isnull(RCGangNo,'''')='''' then GangNo else RCGangNo end) ');
sql.Add('from CK_MYSC_CR_MX A where isnull(MYID,'''')='''+Trim(FMainId)+'''');
Open;
end;
SCreateCDS20(ADOTemp,ClientDataSet1);
SInitCDSData20(ADOTemp,ClientDataSet1);
end;
procedure TfrmQCRKInPut_KC.GetHZData();
var
FKG,FM,FPS:String;
begin
FKG:=Tv1.DataController.Summary.FooterSummaryTexts[0];
FM:=Tv1.DataController.Summary.FooterSummaryTexts[1];
FPS:=Tv1.DataController.Summary.FooterSummaryTexts[2];
MXHZPS.Text:=FPS;
MXHZKGQty.Text:=FKG;
MXHZQty.Text:=FM;
if (Trim(FPS)='') or (Trim(FPS)='0') then
begin
SClearData(Panel2,2);
SClearData(Panel2,99);
end else
begin
with ADOTemp do
begin
close;
sql.Clear;
sql.Add('exec P_Avg_JS :KgQty,:MQty,:PS');
if Trim(FKG)<>'' then
begin
Parameters.ParamByName('KGQty').Value:=FKG;
end else
begin
Parameters.ParamByName('KGQty').Value:=Null;
end;
if Trim(FM)<>'' then
begin
Parameters.ParamByName('MQty').Value:=FM;
end else
begin
Parameters.ParamByName('MQty').Value:=Null;
end;
Parameters.ParamByName('PS').Value:=FPS;
Open;
end;
KgQtyAvg.Text:=ADOTemp.fieldbyname('KgQtyAvg').Value;
QtyAvg.Text:=ADOTemp.fieldbyname('QtyAvg').Value;
end;
end;
procedure TfrmQCRKInPut_KC.FormShow(Sender: TObject);
begin
InitData();
end;
function TfrmQCRKInPut_KC.SaveData():Boolean;
var
maxno,maxmxno,maxnoflag,fsj,FMXID,FCode:String;
begin
Result:=False;
{if Trim(MYType.TxtCode)='' then
begin
Application.MessageBox(<>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD>͵ı<CDB5><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!','<27><>ʾ',0);
Exit;
end;}
try
ADOCmd.Connection.BeginTrans;
///<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if Trim(FMainId)='' then
begin
if GetLSNo(ADOCmd,maxno,'SD','CK_MYSC_CR',3,1)=False then
begin
ADOCmd.Connection.RollbackTrans;
Application.MessageBox(<><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>!','<27><>ʾ',0);
Exit;
end;
maxno:=Trim(maxno)+Trim(MYType.TxtCode);
end else
begin
maxno:=Trim(FMainId);
end;
with ADOCmd do
begin
Close;
sql.Clear;
SQL.Add('select * from CK_MYSC_CR where MYId='''+Trim(FMainId)+'''');
Open;
end;
with ADOCmd do
begin
if Trim(FMainId)='' then
begin
Append;
end
else begin
Edit;
end;
FieldByName('MYId').Value:=Trim(maxno);
FieldByName('CRType').Value:='<27>ڳ<EFBFBD><DAB3><EFBFBD><EFBFBD><EFBFBD>';
FieldByName('CRFlag').Value:='<27><><EFBFBD><EFBFBD>';
FieldByName('CRQtyFlag').Value:=1;
if Trim(FMainId)='' then
begin
FieldByName('Filler').Value:=Trim(DName);
FieldByName('FillerCode').Value:=Trim(DCode);
end else
begin
FieldByName('Editer').Value:=Trim(DName);
FieldByName('EditerCode').Value:=Trim(DCode);
FieldByName('EditTime').Value:=SGetServerDateTime(ADOTemp);
end;
RTSetsavedata(ADOCmd,'CK_MYSC_CR',Panel3,2);
Post;
end;
FMainId:=Trim(maxno);
with ADOCmd do
begin
Close;
sql.Clear;
SQL.Add('UPdate CK_MYSC_CR Set KHDayCS=isnull((select isnull(max(KHDayCS),0) from CK_MYSC_CR A ');
sql.Add(' where A.CRTime=CK_MYSC_CR.CRTime and isnull(A.KHName,'''')=isnull(CK_MYSC_CR.KHName,'''')),0)+1');
SQL.Add('where MYID='''+Trim(maxno)+''' and isnull(KHName,'''')<>'''' ');
ExecSQL;
end;
ClientDataSet1.DisableControls;
with ClientDataSet1 do
begin
First;
while not Eof do
begin
with ADOCmd do
begin
Close;
sql.Clear;
sql.Add('select * from CK_MYSC_CR_MX where MXID='''+Trim(ClientDataSet1.fieldbyname('MXID').AsString)+'''');
Open;
end;
FMXID:=Trim(ADOCmd.fieldbyname('MXID').AsString);
if Trim(FMXID)='' then
begin
if GetLSNo(ADOCmd,maxmxno,'QM','CK_MYSC_CR_MX',4,1)=False then
begin
ClientDataSet1.EnableControls;
ADOCmd.Connection.RollbackTrans;
Application.MessageBox(<>ڳ<EFBFBD><DAB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>','<27><>ʾ',0);
Exit;
end;
maxmxno:=maxmxno+Trim(MYType.TxtCode);
with ADOCmd do
begin
Close;
sql.Clear;
sql.Add('select * from CK_MYSC_CR_MX where MXID='''+Trim(maxmxno)+'''');
Open;
end;
with ADOCmd do
begin
Append;
FieldByName('MYID').Value:=Trim(maxno);
FieldByName('MXID').Value:=Trim(maxmxno);
FieldByName('RCGangNo').Value:=ClientDataSet1.fieldbyname('RCGangNo').Value;
FieldByName('MXNote').Value:=ClientDataSet1.fieldbyname('MXNote').Value;
FieldByName('KgQty').Value:=ClientDataSet1.fieldbyname('KgQty').Value;
FieldByName('MQty').Value:=ClientDataSet1.fieldbyname('MQty').Value;
FieldByName('Filler').Value:=Trim(DName);
FieldByName('FillerCode').Value:=Trim(DCode);
Post;
end;
with ADOCmd do
begin
Close;
sql.Clear;
sql.Add(' exec P_Update_QCRK_GangNo :MYID');
Parameters.ParamByName('MYID').Value:=Trim(maxno);
ExecSQL;
end;
with ADOCmd do
begin
Close;
sql.Clear;
sql.Add('Update CK_MYSC_CR_MX Set JH=isnull((select isnull(max(JH),0) from CK_MYSC_CR_MX A ');
sql.Add(' where A.MYID='''+Trim(maxno)+''' and isnull(A.RCGangNO,'''')=isnull(CK_MYSC_CR_MX.RCGangNO,'''')');
sql.Add(' and isnull(A.GangNO,'''')=isnull(CK_MYSC_CR_MX.GangNO,'''')),0)+1 ');
sql.Add(' where MXID='''+Trim(maxmxno)+'''');
ExecSQL;
end;
Edit;
FieldByName('MYID').Value:=Trim(maxno);
FieldByName('MXID').Value:=Trim(maxmxno);
Post;
end;
Next;
end;
end;
ClientDataSet1.EnableControls;
with ADOCmd do
begin
Close;
sql.Clear;
sql.Add(' exec P_Update_QCRK_Qty :MYID');
Parameters.ParamByName('MYID').Value:=Trim(maxno);
ExecSQL;
end;
ADOCmd.Connection.CommitTrans;
InitData();
FMainId:=Trim(maxno);
Result:=True;
except
Result:=False;
ClientDataSet1.EnableControls;
ADOCmd.Connection.RollbackTrans;
Application.MessageBox('<27><><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD>','<27><>ʾ',0);
end;
end;
procedure TfrmQCRKInPut_KC.ShuiXiSuoLvClick(Sender: TObject);
begin
if Trim(TEdit(Sender).Text)='' then
begin
TEdit(Sender).Text:='<27><>';
end else
begin
TEdit(Sender).Text:='';
end;
end;
procedure TfrmQCRKInPut_KC.ShuiXiSuoLvJGMouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
if Trim(FRead)='' then
begin
TEdit(Sender).ReadOnly:=True;
end else
begin
TEdit(Sender).ReadOnly:=False;
end;
end;
procedure TfrmQCRKInPut_KC.BtnQXClick(Sender: TObject);
begin
Panel5.Visible:=False;
end;
procedure TfrmQCRKInPut_KC.MYNameKeyPress(Sender: TObject; var Key: Char);
begin
if Key=#13 then
begin
if Trim(MYType.Text)='' then
begin
Application.MessageBox(<><C3BB>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD>!','<27><>ʾ',0);
Exit;
end;
end;
end;
procedure TfrmQCRKInPut_KC.v1Column7PropertiesButtonClick(Sender: TObject;
AButtonIndex: Integer);
begin
try
frmQCRKJLList:=TfrmQCRKJLList.Create(Application);
with frmQCRKJLList do
begin
FMXID:=Trim(Self.ClientDataSet1.fieldbyname('MXID').AsString);
if ShowModal=1 then
begin
end;
end;
finally
frmQCRKJLList.Free;
end;
end;
procedure TfrmQCRKInPut_KC.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
ModalResult:=1;
end;
procedure TfrmQCRKInPut_KC.BtnPrtClick(Sender: TObject);
var
fPrintFile,Txt,fImagePath:string;
i,j:Integer;
Moudle: THandle;
Makebar:TMakebar;
Mixtext:TMixtext;
begin
if ClientDataSet1.Locate('GangNo',null,[])=true then
begin
Application.MessageBox(<>б<EFBFBD><D0B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD>ȵ<EFBFBD><C8B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٴ<EFBFBD>ӡ<EFBFBD><D3A1>ǩ<EFBFBD><C7A9>','<27><>ʾ',0);
Exit;
end;
if ClientDataSet1.Locate('SSel',True,[])=false then
begin
Application.MessageBox(<><C3BB>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3>ٴ<EFBFBD>ӡ<EFBFBD><D3A1>ǩ<EFBFBD><C7A9>','<27><>ʾ',0);
Exit;
end;
if ComboBox2.Text='' then
begin
Application.MessageBox('<27><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!','<27><>ʾ',0);
Exit;
end;
if ComboBox1.Text='' then
begin
Application.MessageBox('<27><>ѡ<EFBFBD><D1A1><EFBFBD>ߴ<EFBFBD>!','<27><>ʾ',0);
Exit;
end;
if ComboBox1.Text='9*7' then
begin
fPrintFile:= ExtractFilePath(Application.ExeName) + 'Report\<5C>ڳ<EFBFBD><DAB3><EFBFBD><EFBFBD><EFBFBD>Ⱦɫ<C8BE><C9AB><EFBFBD>ϱ<EFBFBD>ǩ97.rmf';
end else
if ComboBox1.Text='8*5' then
begin
fPrintFile:= ExtractFilePath(Application.ExeName) + 'Report\<5C>ڳ<EFBFBD><DAB3><EFBFBD><EFBFBD><EFBFBD>Ⱦɫ<C8BE><C9AB><EFBFBD>ϱ<EFBFBD>ǩ85.rmf';
end;
if FileExists(fPrintFile)=False then
begin
if ComboBox1.Text='9*7' then
Application.MessageBox(PChar(<><C3BB><EFBFBD><EFBFBD>'+ExtractFilePath(Application.ExeName)+'Report\<5C>ڳ<EFBFBD><DAB3><EFBFBD><EFBFBD><EFBFBD>Ⱦɫ<C8BE><C9AB><EFBFBD>ϱ<EFBFBD>ǩ97.rmf'),'<27><>ʾ',0);
if ComboBox1.Text='8*5' then
Application.MessageBox(PChar(<><C3BB><EFBFBD><EFBFBD>'+ExtractFilePath(Application.ExeName)+'Report\<5C>ڳ<EFBFBD><DAB3><EFBFBD><EFBFBD><EFBFBD>Ⱦɫ<C8BE><C9AB><EFBFBD>ϱ<EFBFBD>ǩ85.rmf'),'<27><>ʾ',0);
exit;
end;
ClientDataSet1.DisableControls;
with ClientDataSet1 do
begin
First;
while Locate('SSel',True,[]) do
begin
with ADOTemp do
begin
Close;
SQL.Clear;
sql.Add(' Exec P_PRT_QCRK_RSML :MXID');
Parameters.ParamByName('MXID').Value:=Trim(ClientDataSet1.fieldbyname('MXID').AsString);
Open;
end;
SCreateCDS20(ADOTemp,CDS_Print);
SInitCDSData20(ADOTemp,CDS_Print);
try
Moudle:=LoadLibrary('MakeQRBarcode.dll');
@Makebar:=GetProcAddress(Moudle,'Make');
@Mixtext:=GetProcAddress(Moudle,'MixText');
Txt:=Trim(ClientDataSet1.fieldbyname('MXID').AsString);
fImagePath:=ExtractFilePath(Application.ExeName)+'image\temp.bmp';
if not DirectoryExists(pchar(ExtractFilePath(Application.ExeName)+'image')) then
CreateDirectory(pchar(ExtractFilePath(Application.ExeName)+'image'),nil);
if FileExists(fImagePath) then DeleteFile(fImagePath);
Makebar(pchar(Txt),Length(Txt),3,3,0,PChar(fImagePath),3);
except
application.MessageBox('<27><>ά<EFBFBD><CEAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD>','<27><>ʾ<EFBFBD><CABE>Ϣ',MB_ICONERROR);
exit;
end;
Edit;
FieldByName('SSel').Value:=False;
RMVariables['QRBARCODE']:=fImagePath;
RM1.LoadFromFile(fPrintFile);
//RM1.ShowReport;
for i:=1 to StrToInt(ComboBox2.Text) do
begin
RM1.PrintReport;
end;
end;
end;
ClientDataSet1.EnableControls;
ComboBox2.ItemIndex:=0;
ComboBox1.ItemIndex:=-1;
Panel5.Visible:=False;
end;
procedure TfrmQCRKInPut_KC.InitColor();
var
fsj:string;
begin
with ADOTemp do
begin
Close;
sql.Clear;
sql.Add('select * from RT_PTColor where PTID='''+Trim(PTID.Text)+'''');
Open;
end;
fsj:=Trim(ADOTemp.fieldbyname('ColDaiMa').AsString);
Panel6.Color:=StrToInt('$'+Trim(fsj));
end;
procedure TfrmQCRKInPut_KC.Button3Click(Sender: TObject);
begin
Panel5.Visible:=True;
end;
procedure TfrmQCRKInPut_KC.Panel6DblClick(Sender: TObject);
begin
try
frmRSColorBig:=TfrmRSColorBig.Create(Application);
with frmRSColorBig do
begin
frmRSColorBig.Label1.Caption:=Self.MYColorNo.Text+'#';
frmRSColorBig.Label2.Caption:=Self.MYColor.Text;
frmRSColorBig.Color:=Self.Panel6.Color;
if ShowModal=1 then
begin
end;
end;
finally
end;
end;
procedure TfrmQCRKInPut_KC.N1Click(Sender: TObject);
begin
try
frmRTPTColor:=TfrmRTPTColor.Create(Application);
with frmRTPTColor do
begin
if ShowModal=1 then
begin
Self.PTID.Text:=Trim(frmRTPTColor.FPTID);
Self.MYColor.Text:=Trim(frmRTPTColor.FColNameKH);
Self.MYColorNo.Text:=Trim(frmRTPTColor.FColName);
end;
end;
finally
frmRTPTColor.Free;
end;
if Trim(PTID.Text)<>'' then
begin
InitColor();
end;
end;
procedure TfrmQCRKInPut_KC.Button5Click(Sender: TObject);
begin
frmZDYCPName:=TfrmZDYCPName.create(self);
with frmZDYCPName do
begin
flag:='MYName';
flagName:='Ʒ<><C6B7>';
V1Code.Visible:=true;
if showmodal=1 then
begin
MYName.text:=Trim(ClientDataSet1.fieldbyname('ZDYName').AsString);
MYCode.text:=Trim(ClientDataSet1.fieldbyname('ZDYNo').AsString);
end;
free;
end;
end;
procedure TfrmQCRKInPut_KC.Button4Click(Sender: TObject);
begin
frmBPZDY_LRGX_CX:=TfrmBPZDY_LRGX_CX.Create(self);
with frmBPZDY_LRGX_CX do
begin
if ShowModal=1 then
begin
GYLXName.Text:=Trim(FZGY);
end;
free;
end;
end;
end.