mirror of
http://gitlab.expertsoft.com.ua/git/expertcad
synced 2026-01-11 21:45:39 +02:00
4355 lines
151 KiB
ObjectPascal
4355 lines
151 KiB
ObjectPascal
unit U_MasterUpdatePrice;
|
||
|
||
interface
|
||
|
||
uses
|
||
Windows, U_LNG, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
|
||
Dialogs, ExtCtrls, RzPanel, RzTabs, RzButton,
|
||
StdCtrls, Mask, RzEdit, Buttons, Contnrs, XLSFile, XLSWorkbook, XLSFormat, XLSRects,
|
||
|
||
U_BaseCommon, U_BaseConstants, U_Common, U_SCSComponent, U_SCSLists, Grids, RzCommon, RzCmboBx, RzRadChk, exgrid, RapTree,
|
||
FlytreePro, Treecoll, IsPlugEdit, ispinedit, FIBQuery, pFIBQuery, Menus, XPMenu,
|
||
siComp, siLngLnk, ComCtrls, RzListVw, RzStatus, cxStyles, cxCustomData,
|
||
cxGraphics, cxFilter, cxData, cxDataStorage, cxEdit, DB, cxDBData,
|
||
cxMemo, cxCheckBox, cxCurrencyEdit, cxColorComboBox, cxSpinEdit,
|
||
cxTextEdit, cxGridLevel, cxGridCustomTableView, cxGridTableView,
|
||
cxGridDBTableView, cxClasses, cxControls, cxGridCustomView, cxGrid,
|
||
cxDropDownEdit, kbmMemTable, cxDBLookupComboBox, cxContainer, cxMaskEdit, U_Constants,
|
||
U_Common_Classes, cxLookAndFeels, cxLookAndFeelPainters, cxNavigator;
|
||
|
||
const
|
||
// Column index
|
||
ciArtNo = 0;
|
||
ciCypher = 1;
|
||
ciName = 2;
|
||
ciIzm = 3;
|
||
ciCurrPrice = 4;
|
||
ciNewPriceInXFCurrency = 5;
|
||
ciNewPriceInComponCurrency = 6;
|
||
ciNewName = 7;
|
||
ciResType = 8;
|
||
|
||
//Menu Indexes
|
||
miComponArtNo = 0;
|
||
miComponPrice = 1;
|
||
miNormResCypher = 2;
|
||
miNormResName = 3;
|
||
miNormResIzm = 4;
|
||
miResPrice = 5;
|
||
miResType = 6;
|
||
miName = 7;
|
||
miIzm = 8;
|
||
miStructLevel = 9;
|
||
|
||
cntStructLevels = 6;
|
||
|
||
|
||
type
|
||
TTabXFSheetInfo = class
|
||
private
|
||
FOwner: TRzTabSheet;
|
||
FGrid: TStringGrid;
|
||
public
|
||
IsLoadedSheet: Boolean;
|
||
//ArtNoColumIndex: Integer;
|
||
//PriceColumIndex: Integer;
|
||
//NameColumIndex: Integer;
|
||
//ArtNoType: TArtNoType;
|
||
|
||
SheetIndex: Integer;
|
||
ColumnCount: Integer;
|
||
ColumnContextPopup: Integer;
|
||
RowCount: integer;
|
||
RowContextPopup: Integer;
|
||
|
||
RelatedObject: TObject;
|
||
|
||
constructor Create(AOwner: TRzTabSheet);
|
||
destructor Destroy; override;
|
||
end;
|
||
|
||
TXLSPreview = class(TMyObject)
|
||
private
|
||
FParentControl: TWinControl;
|
||
|
||
FObjectList: TObjectList;
|
||
FpcXFSheets: TRzPageControl;
|
||
FPopupMenu: TPopupMenu;
|
||
|
||
Fxf: TXLSFile;
|
||
FFileName: String;
|
||
FXFSheetPopupPoint: TPoint;
|
||
FActiveTabXFSheetInfo: TTabXFSheetInfo;
|
||
|
||
FControlsRelatedToMenuItems: TObjectList;
|
||
|
||
FOwnsRelatedObjectsToSheetInfo: Boolean;
|
||
FOnCreateSheetInfo: TNotifyEvent;
|
||
FOnChangeSheet: TNotifyEvent;
|
||
FOnMenuItemClick: TNotifyEvent;
|
||
|
||
procedure ClearPages;
|
||
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||
procedure DefineSheetColumns(ATabXFSheetInfo: TTabXFSheetInfo);
|
||
procedure FpcXFSheetsChange(Sender: TObject);
|
||
procedure FPopupMenuItemClick(Sender: TObject);
|
||
procedure XFSheetContextPopup(Sender: TObject; MousePos: TPoint;
|
||
var Handled: Boolean);
|
||
public
|
||
property OwnsRelatedObjectsToSheetInfo: Boolean read FOwnsRelatedObjectsToSheetInfo write FOwnsRelatedObjectsToSheetInfo;
|
||
property ActiveTabXFSheetInfo: TTabXFSheetInfo read FActiveTabXFSheetInfo;
|
||
property OnCreateSheetInfo: TNotifyEvent read FOnCreateSheetInfo write FOnCreateSheetInfo;
|
||
property OnChangeSheet: TNotifyEvent read FOnChangeSheet write FOnChangeSheet;
|
||
property OnMenuItemClick: TNotifyEvent read FOnMenuItemClick write FOnMenuItemClick;
|
||
property pcXFSheets: TRzPageControl read FpcXFSheets;
|
||
property Xf: TXLSFile read Fxf;
|
||
property FileName: String read FFileName;
|
||
|
||
function AddMenuItem(ACaption: String; ATag: Integer; ARelatedControl: TWinControl=nil): TMenuItem;
|
||
procedure AddRelatedControlWithMenuItem(AControl: TWinControl; ATag: Integer);
|
||
function GetRelatedControlWithMenuItemByTag(ATag: Integer): TWinControl;
|
||
|
||
procedure ClearMenuItems;
|
||
constructor Create(AParent: TWinControl; AOwnsRelatedObjectsToSheetInfo: Boolean);
|
||
destructor Destroy; override;
|
||
function OpenFromFile(AFileName: string): Boolean;
|
||
procedure Close;
|
||
procedure ShowXLS;
|
||
end;
|
||
|
||
TSheetComponPropsInfo = class(TMyObject)
|
||
private
|
||
procedure AddRowToMT(const ASysName, ACaption: String; AColumn: String='');
|
||
procedure AddCompPropToMT(const APropSysName: String);
|
||
public
|
||
ArtNoColumIndex: Integer;
|
||
PriceColumIndex: Integer;
|
||
NameColumIndex: Integer;
|
||
IzmColumIndex: Integer;
|
||
ArtNoType: TArtNoType;
|
||
|
||
NormResCypherColumIndex: Integer;
|
||
NormResNameColumIndex: Integer;
|
||
NormResIzmColumIndex: Integer;
|
||
ResPriceColumIndex: Integer;
|
||
ResTypeColumIndex: Integer;
|
||
|
||
StructLevelsIndex: TIntList;
|
||
FMT: TkbmMemTable;
|
||
FDataSource: TDataSource;
|
||
|
||
constructor Create;
|
||
destructor Destroy; override;
|
||
procedure DefineColumnsNums;
|
||
end;
|
||
|
||
TStepSheetInfo = class(TObject)
|
||
public
|
||
FSheetOwner: TRzTabSheet;
|
||
FPanelCaption: TRzPanel;
|
||
FCaptionValue: String;
|
||
end;
|
||
|
||
TXLSRowInfo = class(TMyObject)
|
||
public
|
||
FArtNo: string;
|
||
FName: string;
|
||
FPrice: Double;
|
||
FIzm: string;
|
||
|
||
FRowIndex: Integer;
|
||
|
||
FCatalogs: TStringList;
|
||
FPropValues: TStringList;
|
||
|
||
constructor Create;
|
||
destructor Destroy; override;
|
||
end;
|
||
|
||
TNodeObjectInfo = class(TMyObject)
|
||
private
|
||
FOwner: TFlyNode;
|
||
public
|
||
ID: Integer;
|
||
ArtNo: string;
|
||
Name: string;
|
||
CurrPrice: Double;
|
||
IDComponType: Integer;
|
||
|
||
IsTransformPrice: Boolean;
|
||
NewPriceInComponCurrency: Double;
|
||
NewPriceInXFCurrency: Double;
|
||
NewName: String;
|
||
Cypher: String;
|
||
Izm: String;
|
||
ResType: Integer;
|
||
|
||
CurrencyM: TCurrency;
|
||
CurrencyXF: TCurrency;
|
||
|
||
FRowIndex: Integer;
|
||
FCatalogs: TStringList;
|
||
|
||
constructor Create(AOwner: TFlyNode);
|
||
destructor Destroy; override;
|
||
end;
|
||
|
||
TF_MasterUpdatePrice = class(TForm)
|
||
pcUpdatePrice: TRzPageControl;
|
||
gbNavigator: TRzGroupBox;
|
||
btBack: TRzButton;
|
||
btNext: TRzButton;
|
||
btCancel: TRzButton;
|
||
tsSelectFileName: TRzTabSheet;
|
||
tsSelectColums: TRzTabSheet;
|
||
Label1: TLabel;
|
||
edFileNameXls: TRzEdit;
|
||
btSelectXlsFile: TSpeedButton;
|
||
gbXLSDoc: TRzGroupBox;
|
||
pcXFSheets: TRzPageControl;
|
||
TabSheet1: TRzTabSheet;
|
||
TabSheet2: TRzTabSheet;
|
||
TabSheet3: TRzTabSheet;
|
||
pnCaption1: TRzPanel;
|
||
pnCaption2: TRzPanel;
|
||
gbSheetProps: TRzGroupBox;
|
||
RzPanel2: TRzPanel;
|
||
Timer_OnExecute: TTimer;
|
||
tsSelectCurrency: TRzTabSheet;
|
||
pnCaption3: TRzPanel;
|
||
Label3: TLabel;
|
||
cbCurrency: TRzComboBox;
|
||
btSelectCurrency: TSpeedButton;
|
||
tsSelectComponents: TRzTabSheet;
|
||
pnCaption4: TRzPanel;
|
||
RzPanel1: TRzPanel;
|
||
btUpdatePrices: TRzBitBtn;
|
||
tvComponents: TFlyTreeViewPro;
|
||
StringGrid1: TStringGrid;
|
||
cbSelectCurrComponInNB: TRzCheckBox;
|
||
btCheckAllCompons: TSpeedButton;
|
||
btUnCheckAllCompons: TSpeedButton;
|
||
pmnuXFList: TPopupMenu;
|
||
pmiSetColAsArticul: TMenuItem;
|
||
pmiSetColAsPrice: TMenuItem;
|
||
lng_Forms: TsiLangLinked;
|
||
gbWorVerisonParams: TRzGroupBox;
|
||
Label5: TLabel;
|
||
cbColumnName: TRzComboBox;
|
||
RzPanel3: TRzPanel;
|
||
lbNoticeCurrUOM: TLabel;
|
||
pcSheetProps: TRzPageControl;
|
||
tsUpdateComponSheetProps: TRzTabSheet;
|
||
tsImportNormResSheetProps: TRzTabSheet;
|
||
pnUpdateComponSheetProps: TRzPanel;
|
||
Label2: TLabel;
|
||
Label4: TLabel;
|
||
cbColumnArtNo: TRzComboBox;
|
||
cbColumnPrice: TRzComboBox;
|
||
RzGroupBox3: TRzGroupBox;
|
||
rbArtNoProduc: TRzRadioButton;
|
||
rbArtNoDistrib: TRzRadioButton;
|
||
pnImportNormResSheetProps: TRzPanel;
|
||
pnImportNormSheetProps: TRzPanel;
|
||
lbNormResCypher: TLabel;
|
||
cbNormResCypher: TRzComboBox;
|
||
lbNormResName: TLabel;
|
||
cbNormResName: TRzComboBox;
|
||
lbNormResIzm: TLabel;
|
||
cbNormResIzm: TRzComboBox;
|
||
pnImportResSheetProps: TRzPanel;
|
||
Label10: TLabel;
|
||
cbResPrice: TRzComboBox;
|
||
lbResType: TLabel;
|
||
cbResType: TRzComboBox;
|
||
pnUOMForLine: TPanel;
|
||
Label6: TLabel;
|
||
cbUOM: TRzComboBox;
|
||
gbExistsObjects: TRzGroupBox;
|
||
lvExistsObjects: TRzListView;
|
||
spExistsObjects: TSplitter;
|
||
cbSmartCompareArtNo: TCheckBox;
|
||
sbComponsInfo: TRzStatusBar;
|
||
fsComponCountExists: TRzFieldStatus;
|
||
fsComponCountLack: TRzFieldStatus;
|
||
Label7: TLabel;
|
||
cbColumnIzm: TRzComboBox;
|
||
RzGroupBox1: TRzGroupBox;
|
||
Label8: TLabel;
|
||
cbStructLevel1: TRzComboBox;
|
||
Label9: TLabel;
|
||
cbStructLevel2: TRzComboBox;
|
||
Label11: TLabel;
|
||
cbStructLevel3: TRzComboBox;
|
||
Label12: TLabel;
|
||
cbStructLevel4: TRzComboBox;
|
||
Label13: TLabel;
|
||
cbStructLevel5: TRzComboBox;
|
||
Label14: TLabel;
|
||
cbStructLevel0: TRzComboBox;
|
||
RzGroupBox2: TRzGroupBox;
|
||
Grid_PropColumns: TcxGrid;
|
||
GT_PropColumns: TcxGridDBTableView;
|
||
GT_PropColumnsCaption: TcxGridDBColumn;
|
||
GT_PropColumnsColumn: TcxGridDBColumn;
|
||
GL_PropColumns: TcxGridLevel;
|
||
cbApplyStructureForExist: TRzCheckBox;
|
||
cbAddLackCompons: TRzCheckBox;
|
||
cbApplyParamsFroExist: TRzCheckBox;
|
||
DefPrice: TRzEdit;
|
||
EdtStartPos: TRzEdit;
|
||
Label15: TLabel;
|
||
cbAutoAddInter: TCheckBox;
|
||
cbLoadFromCompType: TCheckBox;
|
||
ComboCompType: TcxComboBox;
|
||
cbAddToDescr: TCheckBox;
|
||
XPMenu: TXPMenu;
|
||
procedure gbNavigatorResize(Sender: TObject);
|
||
procedure pcUpdatePriceChange(Sender: TObject);
|
||
procedure btBackClick(Sender: TObject);
|
||
procedure btNextClick(Sender: TObject);
|
||
procedure FormCreate(Sender: TObject);
|
||
procedure btSelectXlsFileClick(Sender: TObject);
|
||
procedure pcXFSheetsChange(Sender: TObject);
|
||
procedure Timer_OnExecuteTimer(Sender: TObject);
|
||
procedure cbColumnArtNoChange(Sender: TObject);
|
||
procedure cbColumnPriceChange(Sender: TObject);
|
||
procedure rbArtNoProducClick(Sender: TObject);
|
||
procedure rbArtNoDistribClick(Sender: TObject);
|
||
procedure btSelectCurrencyClick(Sender: TObject);
|
||
procedure cbCurrencyChange(Sender: TObject);
|
||
procedure btUpdatePricesClick(Sender: TObject);
|
||
procedure cbSelectCurrComponInNBClick(Sender: TObject);
|
||
procedure tvComponentsSelectedChanged(OldNode, NewNode: TFlyNode);
|
||
procedure btCheckAllComponsClick(Sender: TObject);
|
||
procedure btUnCheckAllComponsClick(Sender: TObject);
|
||
procedure tvComponentsStateChanging(Node: TFlyNode;
|
||
var AllowChange: Boolean);
|
||
procedure pmiSetColAsArticulClick(Sender: TObject);
|
||
procedure pmiSetColAsPriceClick(Sender: TObject);
|
||
procedure cbColumnNameChange(Sender: TObject);
|
||
procedure cbUOMChange(Sender: TObject);
|
||
procedure FormDestroy(Sender: TObject);
|
||
procedure cbColumnSheetParamChange(Sender: TObject);
|
||
procedure lvExistsObjectsSelectItem(Sender: TObject; Item: TListItem;
|
||
Selected: Boolean);
|
||
procedure tvComponentsCloseUp(Sender: TISPlugInplaceEdit;
|
||
Section: TISPlugSection; DropDown: TISDropDown; var Accept: Boolean);
|
||
procedure pmiSetColAsIzmClick(Sender: TObject);
|
||
procedure GT_PropColumnsColumnPropertiesValidate(Sender: TObject;
|
||
var DisplayValue: Variant; var ErrorText: TCaption;
|
||
var Error: Boolean);
|
||
procedure cbLoadFromCompTypeClick(Sender: TObject);
|
||
procedure fsComponCountLackDblClick(Sender: TObject);
|
||
procedure fsComponCountExistsDblClick(Sender: TObject);
|
||
private
|
||
GForm: TForm;
|
||
FFromForm: TForm;
|
||
//Fxf: TXLSFile;
|
||
FXLSPreview: TXLSPreview;
|
||
FIsOpenedXlsFile: Boolean;
|
||
FIsLoadedXlsFile: Boolean;
|
||
FIsLoadedCurrency: Boolean;
|
||
FISLoadedComponents: Boolean;
|
||
FISLoadedComponentPrices: Boolean;
|
||
FISLoadedResources: Boolean;
|
||
FISLoadedResourcePrices: Boolean;
|
||
FISLoadedNorms: Boolean;
|
||
FOpenedFileName: string;
|
||
FXLSUOM: Integer;
|
||
|
||
//FActiveTabXFSheetInfo: TTabXFSheetInfo;
|
||
FActiveSheetComponPropsInfo: TSheetComponPropsInfo;
|
||
FActiveCurrency: TCurrency;
|
||
|
||
FXFSheetPopupPoint: TPoint;
|
||
|
||
FFormMode: TMasterUpdatePriceMode;
|
||
FStepSheets: TObjectList;
|
||
FPanelWithSheetParams: TRzPanel;
|
||
//FControlsRelatedToMenuItems: TObjectList;
|
||
|
||
FAllSuppliesKinds: TList;
|
||
FReloadNBTree: Boolean;
|
||
|
||
procedure AddUpdateComponToNB(ATrgCatalog: TSCSCatalog; AComponInfo: TNodeObjectInfo);
|
||
procedure AddNormResInfoToListView(const ACypher, AName, AIzm: String; AID: Integer; AListView: TRzListView);
|
||
//procedure AddRelatedControlWithMenuItem(AControl: TWinControl; ATag: Integer);
|
||
//function CutBeginZeroDefisInArticle(const AArtNo: String): String;
|
||
procedure DropAllSelections;
|
||
procedure DropSelectionForFile;
|
||
procedure DropSelectionForSheet;
|
||
procedure DropSelectionForPrices;
|
||
procedure ClearNodes;
|
||
procedure ClearStepSheetInfo;
|
||
procedure ClearXlsDataFromForm;
|
||
procedure CreateColumnsInListView(AListView: TRzListView; AColNames: TStringList; AWidthList: TIntList);
|
||
procedure CreateColumnsInListViewFromTVColumns(AListView: TRzListView; ATree: TFlyTreeViewPro; AColIndexes: array of Integer);
|
||
function CreateStepSheetInfo(ATabSheet: TRzTabSheet; APanelCaption: TRzPanel): TStepSheetInfo;
|
||
function GetCurrStepIndex: Integer;
|
||
function GetPriceInXLSUOM(APrice: Double; ANodeComponInfo: TNodeObjectInfo): Double;
|
||
function GetPriceInNBUOM(APrice: Double; ANodeComponInfo: TNodeObjectInfo): Double;
|
||
function GetStructLevelCombo(ALevelNum: Integer): TRZComboBox;
|
||
function GetStructLevelFromName(const AName, ANamePrefix: string): Integer;
|
||
//function GetRelatedControlWithMenuItemByTag(ATag: Integer): TWinControl;
|
||
procedure ImportNormResToBase;
|
||
procedure LoadColumnsToStrings(AStrings: TStrings; AColumnCount: Integer);
|
||
procedure LoadComponentsFromXF;
|
||
procedure LoadComponPricesFromXF;
|
||
procedure LoadCurrencies(AGUIDToSelect: String);
|
||
procedure LoadNormsFromXF;
|
||
procedure LoadPropsToCompon(AComponent: TSCSComponent; AComponInfo: TNodeObjectInfo; AChangedProp, AChangedCompType, AChangedCCE: PBoolean);
|
||
procedure LoadResourcesFromXF;
|
||
procedure LoadResourcePricesFromXF;
|
||
procedure LoadSelectedColumnFromSheetInfo(ADestCombo: TRzComboBox; ASelColumnIndex: Integer; ASrcTabXFSheetInfo: TTabXFSheetInfo);
|
||
procedure LoadXlsFileToForm;
|
||
procedure SelectCurrComponentInNB;
|
||
procedure SetActiveCurrencyByGUID(AGUID: string);
|
||
procedure SetCaptionToStepPages;
|
||
procedure SetControls;
|
||
procedure SetSateToAllComponNodes(AState: Integer);
|
||
procedure UpdatePrices;
|
||
procedure XFSheetContextPopup(Sender: TObject; MousePos: TPoint;
|
||
var Handled: Boolean);
|
||
|
||
procedure FXLSPreviewCreateSheetInfo(Sender: TObject);
|
||
procedure FXLSPreviewChangeSheet(Sender: TObject);
|
||
procedure FXLSPreviewMenuItemClick(Sender: TObject);
|
||
public
|
||
FInsertedDirTypeID: Integer;
|
||
|
||
Constructor Create(AOwner: TComponent; AForm: TForm);
|
||
Destructor Destroy; override;
|
||
function Execute(AFormMode: TMasterUpdatePriceMode; AFromForm: TForm): Boolean;
|
||
//function CutBeginZeroDefisInArticle(const AArtNo: String): String;
|
||
end;
|
||
|
||
//var
|
||
//F_MasterUpdatePrice: TF_MasterUpdatePrice;
|
||
var
|
||
NoFindedArticles: TStringList;
|
||
FindedArticles: TStringList;
|
||
|
||
implementation
|
||
Uses U_Main, Unit_DM_SCS;
|
||
{$R *.dfm}
|
||
|
||
{ TTabXFSheetInfo }
|
||
|
||
constructor TTabXFSheetInfo.Create(AOwner: TRzTabSheet);
|
||
begin
|
||
FOwner := AOwner;
|
||
|
||
IsLoadedSheet := false;
|
||
//ArtNoColumIndex := -1;
|
||
//PriceColumIndex := -1;
|
||
//NameColumIndex := -1;
|
||
//ArtNoType := antProduc;
|
||
|
||
SheetIndex := -1;
|
||
ColumnCount := 0;
|
||
RowCount := 0;
|
||
|
||
RelatedObject := nil;
|
||
|
||
FGrid := nil;
|
||
if FOwner <> nil then
|
||
begin
|
||
FGrid := TStringGrid.Create(nil);
|
||
FGrid.Parent := FOwner;
|
||
FGrid.Align := alClient;
|
||
FGrid.Font.Size := 8;
|
||
FGrid.Options := FGrid.Options + [Grids.goColSizing, Grids.goRowSizing];
|
||
end;
|
||
end;
|
||
|
||
destructor TTabXFSheetInfo.Destroy;
|
||
begin
|
||
if Assigned(FGrid) then
|
||
FreeAndNil(FGrid);
|
||
|
||
inherited;
|
||
end;
|
||
|
||
{ TXLSRowInfo }
|
||
|
||
constructor TXLSRowInfo.Create;
|
||
begin
|
||
inherited;
|
||
|
||
FArtNo := '';
|
||
FName := '';
|
||
FPrice := 0;
|
||
FIzm := '';
|
||
|
||
FRowIndex := -1;
|
||
|
||
FCatalogs := TStringList.Create;
|
||
FPropValues := TStringList.Create;
|
||
end;
|
||
|
||
destructor TXLSRowInfo.Destroy;
|
||
begin
|
||
FCatalogs.Free;
|
||
|
||
RemoveGUIDIDFromStrings(FPropValues);
|
||
FPropValues.Free;
|
||
|
||
inherited;
|
||
end;
|
||
|
||
|
||
{ TNodeObjectInfo }
|
||
|
||
constructor TNodeObjectInfo.Create(AOwner: TFlyNode);
|
||
begin
|
||
inherited create;
|
||
FOwner := AOwner;
|
||
|
||
ID := 0;
|
||
ArtNo := '';
|
||
Name := '';
|
||
CurrPrice := 0;
|
||
IDComponType := 0;
|
||
|
||
IsTransformPrice := false;
|
||
NewPriceInComponCurrency := 0;
|
||
NewPriceInXFCurrency := 0;
|
||
NewName := '';
|
||
|
||
Cypher := '';
|
||
Izm := '';
|
||
ResType := -1;
|
||
|
||
FRowIndex := -1;
|
||
|
||
ZeroMemory(@CurrencyM, SizeOf(TCurrency));
|
||
ZeroMemory(@CurrencyXF, SizeOf(TCurrency));
|
||
|
||
FCatalogs := TStringList.Create;
|
||
end;
|
||
|
||
|
||
destructor TNodeObjectInfo.Destroy;
|
||
begin
|
||
FreeAndNil(FCatalogs);
|
||
inherited;
|
||
end;
|
||
|
||
{ TF_MasterUpdatePrice }
|
||
|
||
constructor TF_MasterUpdatePrice.Create(AOwner: TComponent; AForm: TForm);
|
||
begin
|
||
if FindedArticles = nil then
|
||
FindedArticles := TStringList.Create;
|
||
if NoFindedArticles = nil then
|
||
NoFindedArticles := TStringList.Create;
|
||
GForm := AForm;
|
||
inherited Create(AOwner);
|
||
end;
|
||
|
||
destructor TF_MasterUpdatePrice.Destroy;
|
||
begin
|
||
inherited;
|
||
end;
|
||
|
||
function TF_MasterUpdatePrice.Execute(AFormMode: TMasterUpdatePriceMode; AFromForm: TForm): Boolean;
|
||
var
|
||
Combo: TRzComboBox;
|
||
MenuItem: TMenuItem;
|
||
i: Integer;
|
||
begin
|
||
Result := false;
|
||
FFormMode := AFormMode;
|
||
FFromForm := AFromForm;
|
||
FInsertedDirTypeID := 0;
|
||
|
||
cbAutoAddInter.Enabled := GUseLiteFunctional;
|
||
if cbAutoAddInter.Checked and Not GUseLiteFunctional then
|
||
cbAutoAddInter.Checked := False;
|
||
|
||
FXLSPreview.ClearMenuItems;
|
||
FStepSheets.Clear;
|
||
FPanelWithSheetParams := nil;
|
||
tvComponents.Columns[ciNewName].Visible := false;
|
||
pnUOMForLine.Visible := false;
|
||
cbSelectCurrComponInNB.Visible := false;
|
||
lbNoticeCurrUOM.Caption := '';
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
spExistsObjects.Visible := false;
|
||
gbExistsObjects.Visible := false;
|
||
|
||
|
||
if (lng_Forms.ActiveLanguage = 1) or (lng_Forms.ActiveLanguage = 7) then
|
||
begin
|
||
fsComponCountExists.FieldLabel := '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>';
|
||
fsComponCountLack.FieldLabel := '<27><><EFBFBD>-<2D><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>';
|
||
end
|
||
else
|
||
begin
|
||
fsComponCountExists.FieldLabel := 'Items found';
|
||
fsComponCountLack.FieldLabel := 'Items not found';
|
||
end;
|
||
case AFormMode of
|
||
fmUpdateCompons:
|
||
begin
|
||
Caption := cMasterUpdatePrice_Msg1;
|
||
|
||
FStepSheets.Add(tsSelectFileName);
|
||
FStepSheets.Add(tsSelectColums);
|
||
FStepSheets.Add(tsSelectCurrency);
|
||
FStepSheets.Add(tsSelectComponents);
|
||
|
||
TStepSheetInfo(tsSelectColums.Tag).FCaptionValue := cMasterUpdatePrice_Msg9_1;
|
||
TStepSheetInfo(tsSelectComponents.Tag).FCaptionValue := cMasterUpdatePrice_Msg9_2;
|
||
|
||
pcSheetProps.ActivePage := tsUpdateComponSheetProps;
|
||
FPanelWithSheetParams := pnUpdateComponSheetProps;
|
||
|
||
cbColumnName.OnChange := cbColumnSheetParamChange;
|
||
cbColumnIzm.OnChange := cbColumnSheetParamChange;
|
||
|
||
FXLSPreview.AddMenuItem(cMasterUpdatePrice_Msg5_1, miComponArtNo);
|
||
FXLSPreview.AddMenuItem(cMasterUpdatePrice_Msg5_2, miComponPrice);
|
||
FXLSPreview.AddMenuItem(cMasterUpdatePrice_Msg5_8, miName, cbColumnName);
|
||
FXLSPreview.AddMenuItem(cMasterUpdatePrice_Msg5_5, miIzm, cbColumnIzm);
|
||
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
FXLSPreview.AddMenuItem('-', 0);
|
||
for i := 0 to cntStructLevels - 1 do
|
||
begin
|
||
Combo := GetStructLevelCombo(i); //TRzComboBox(FindComponent('cbStructLevel'+IntToStr(i)));
|
||
if Combo <> nil then
|
||
begin
|
||
Combo.OnChange := cbColumnSheetParamChange;
|
||
|
||
MenuItem := FXLSPreview.AddMenuItem(cMasterUpdatePrice_Msg11+' '+IntToStr(i+1), miStructLevel, Combo);
|
||
MenuItem.Name := 'pmiColumnStructLevel'+IntToStr(i);
|
||
end;
|
||
end;
|
||
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||
tvComponents.Columns[ciArtNo].Visible := true;
|
||
tvComponents.Columns[ciCypher].Visible := false;
|
||
tvComponents.Columns[ciName].Visible := true;
|
||
tvComponents.Columns[ciIzm].Visible := false;
|
||
tvComponents.Columns[ciCurrPrice].Visible := true;
|
||
tvComponents.Columns[ciNewPriceInXFCurrency].Visible := true;
|
||
tvComponents.Columns[ciNewPriceInComponCurrency].Visible := true;
|
||
{$IF Defined (FINAL_SCS)}
|
||
tvComponents.Columns[ciNewName].Visible := true;
|
||
{$IFEND}
|
||
tvComponents.Columns[ciResType].Visible := false;
|
||
tvComponents.Columns[ciName].Caption := cMasterUpdatePrice_Msg3_1;
|
||
tvComponents.Columns[ciNewPriceInComponCurrency].Caption := cMasterUpdatePrice_Msg3_3;
|
||
tvComponents.StructureCol := ciArtNo;
|
||
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
pnUOMForLine.Visible := true;
|
||
cbSelectCurrComponInNB.Visible := true;
|
||
end;
|
||
fmImportResources, fmImportNorms:
|
||
begin
|
||
case AFormMode of
|
||
fmImportResources:
|
||
begin
|
||
Caption := cMasterUpdatePrice_Msg1_2;
|
||
|
||
FStepSheets.Add(tsSelectFileName);
|
||
FStepSheets.Add(tsSelectColums);
|
||
FStepSheets.Add(tsSelectCurrency);
|
||
FStepSheets.Add(tsSelectComponents);
|
||
|
||
pnImportResSheetProps.Visible := true;
|
||
|
||
FXLSPreview.AddMenuItem(cMasterUpdatePrice_Msg5_3, miNormResCypher, cbNormResCypher);
|
||
FXLSPreview.AddMenuItem(cMasterUpdatePrice_Msg5_4, miNormResName, cbNormResName);
|
||
FXLSPreview.AddMenuItem(cMasterUpdatePrice_Msg5_5, miNormResIzm, cbNormResIzm);
|
||
FXLSPreview.AddMenuItem(cMasterUpdatePrice_Msg5_6, miResPrice, cbResPrice);
|
||
FXLSPreview.AddMenuItem(cMasterUpdatePrice_Msg5_7, miResType, cbResType);
|
||
|
||
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||
tvComponents.Columns[ciArtNo].Visible := false;
|
||
tvComponents.Columns[ciCypher].Visible := true;
|
||
tvComponents.Columns[ciName].Visible := true;
|
||
tvComponents.Columns[ciIzm].Visible := true;
|
||
tvComponents.Columns[ciCurrPrice].Visible := false;
|
||
tvComponents.Columns[ciNewPriceInXFCurrency].Visible := true;
|
||
tvComponents.Columns[ciNewPriceInComponCurrency].Visible := true;
|
||
tvComponents.Columns[ciResType].Visible := true;
|
||
tvComponents.Columns[ciName].Caption := lbNormResName.Caption;
|
||
tvComponents.Columns[ciNewPriceInComponCurrency].Caption := cMasterUpdatePrice_Msg3_6;
|
||
tvComponents.StructureCol := 0; //tvComponents.StructureCol := ciCypher;
|
||
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
gbExistsObjects.Visible := true;
|
||
spExistsObjects.Visible := true;
|
||
gbExistsObjects.Caption := cMasterUpdatePrice_Msg7_2;
|
||
CreateColumnsInListViewFromTVColumns(lvExistsObjects, tvComponents, [ciCypher, ciName, ciIzm]);
|
||
end;
|
||
fmImportNorms:
|
||
begin
|
||
Caption := cMasterUpdatePrice_Msg1_3;
|
||
|
||
FStepSheets.Add(tsSelectFileName);
|
||
FStepSheets.Add(tsSelectColums);
|
||
FStepSheets.Add(tsSelectComponents);
|
||
|
||
pnImportResSheetProps.Visible := false;
|
||
|
||
FXLSPreview.AddMenuItem(cMasterUpdatePrice_Msg5_3, miNormResCypher, cbNormResCypher);
|
||
FXLSPreview.AddMenuItem(cMasterUpdatePrice_Msg5_4, miNormResName, cbNormResName);
|
||
FXLSPreview.AddMenuItem(cMasterUpdatePrice_Msg5_5, miNormResIzm, cbNormResIzm);
|
||
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||
tvComponents.Columns[ciArtNo].Visible := false;
|
||
tvComponents.Columns[ciCypher].Visible := true;
|
||
tvComponents.Columns[ciName].Visible := true;
|
||
tvComponents.Columns[ciIzm].Visible := true;
|
||
tvComponents.Columns[ciCurrPrice].Visible := false;
|
||
tvComponents.Columns[ciNewPriceInXFCurrency].Visible := false;
|
||
tvComponents.Columns[ciNewPriceInComponCurrency].Visible := false;
|
||
tvComponents.Columns[ciResType].Visible := false;
|
||
tvComponents.Columns[ciName].Caption := lbNormResName.Caption;
|
||
tvComponents.StructureCol := 0; //tvComponents.StructureCol := ciCypher;
|
||
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
gbExistsObjects.Visible := true;
|
||
spExistsObjects.Visible := true;
|
||
gbExistsObjects.Caption := cMasterUpdatePrice_Msg7_1;
|
||
CreateColumnsInListViewFromTVColumns(lvExistsObjects, tvComponents, [ciCypher, ciName, ciIzm]);
|
||
end;
|
||
end;
|
||
TStepSheetInfo(tsSelectColums.Tag).FCaptionValue := cMasterUpdatePrice_Msg9_3;
|
||
TStepSheetInfo(tsSelectComponents.Tag).FCaptionValue := cMasterUpdatePrice_Msg9_4;
|
||
|
||
Application.ProcessMessages;
|
||
pcSheetProps.ActivePage := tsImportNormResSheetProps;
|
||
FPanelWithSheetParams := pnImportNormResSheetProps;
|
||
|
||
{Application.ProcessMessages;
|
||
pnImportNormResSheetProps.AutoSize := true;
|
||
Application.ProcessMessages;
|
||
pnImportNormResSheetProps.AutoSize := false;
|
||
Application.ProcessMessages;
|
||
pnImportNormResSheetProps.AutoSize := true;
|
||
Application.ProcessMessages;
|
||
pnImportNormResSheetProps.AutoSize := false;}
|
||
|
||
Application.ProcessMessages;
|
||
pnImportNormResSheetProps.AutoSize := true;
|
||
Application.ProcessMessages;
|
||
pnImportNormSheetProps.Top := pnImportNormSheetProps.Top + 1;
|
||
Application.ProcessMessages;
|
||
pnImportNormSheetProps.Top := pnImportNormSheetProps.Top - 1;
|
||
Application.ProcessMessages;
|
||
end;
|
||
end;
|
||
SetCaptionToStepPages;
|
||
|
||
XPMenu.Active := false;
|
||
XPMenu.Active := true;
|
||
|
||
pcUpdatePrice.ActivePage := TRzTabSheet(FStepSheets[0]); //pcUpdatePrice.ActivePage := tsSelectFileName;
|
||
DropAllSelections;
|
||
|
||
FXLSUOM := TF_Main(GForm).FUOM;
|
||
SelectItemByIDinComboRz(cbUOM, FXLSUOM);
|
||
|
||
SetControls;
|
||
|
||
//if Assigned(Fxf) then
|
||
// FreeAndNil(Fxf);
|
||
//Fxf := TXLSFile.Create;
|
||
|
||
FActiveSheetComponPropsInfo := nil;
|
||
|
||
FXLSPreview.Close;
|
||
|
||
Timer_OnExecute.Enabled := true;
|
||
if ShowModal = mrOk then
|
||
Result := true;
|
||
|
||
FXLSPreview.Close;
|
||
//if Assigned(Fxf) then
|
||
// FreeAndNil(Fxf);
|
||
end;
|
||
|
||
procedure TF_MasterUpdatePrice.gbNavigatorResize(Sender: TObject);
|
||
begin
|
||
SetMiddleControlChilds(TControl(Sender), TControl(Self));
|
||
end;
|
||
|
||
procedure TF_MasterUpdatePrice.AddUpdateComponToNB(ATrgCatalog: TSCSCatalog; AComponInfo: TNodeObjectInfo);
|
||
var
|
||
Compon: TSCSComponent;
|
||
OldIDComponType: Integer;
|
||
|
||
ChangedProp: Boolean;
|
||
ChangedCompType: Boolean;
|
||
ChangedCCE: Boolean;
|
||
propnum: integer;
|
||
begin
|
||
try
|
||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
//if (AComponInfo.ID > 0) and (AComponInfo.IDComponType > 0) then
|
||
// Exit; ///// EXIT /////
|
||
|
||
// <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||
if (ATrgCatalog <> nil) or (AComponInfo.ID <> 0) then
|
||
begin
|
||
Compon := TSCSComponent.Create(GForm);
|
||
OldIDComponType := Compon.ID_ComponentType;
|
||
if AComponInfo.ID > 0 then
|
||
begin
|
||
Compon.LoadComponentByID(AComponInfo.ID, true);
|
||
OldIDComponType := Compon.ID_ComponentType;
|
||
end
|
||
else
|
||
begin
|
||
Compon.ArticulDistributor := AComponInfo.ArtNo;
|
||
Compon.ArticulProducer := AComponInfo.ArtNo;
|
||
|
||
Compon.Cypher := TF_Main(GForm).DM.GenComponentNewCypher;
|
||
Compon.GuidNB := CreateGUID;
|
||
|
||
Compon.Price := AComponInfo.NewPriceInComponCurrency;
|
||
Compon.Price_Calc := Compon.Price;
|
||
end;
|
||
|
||
|
||
if cbColumnName.ItemIndex > 0 then
|
||
Compon.Name := AComponInfo.NewName;
|
||
if cbColumnIzm.ItemIndex > 0 then
|
||
Compon.Izm := AComponInfo.Izm;
|
||
|
||
LoadPropsToCompon(Compon, AComponInfo, @ChangedProp, @ChangedCompType, @ChangedCCE);
|
||
if AComponInfo.ID = 0 then
|
||
begin
|
||
Compon.SaveComponentAsNew(true, false);
|
||
if cbAutoAddInter.Checked then
|
||
begin
|
||
for propnum := 0 to Compon.Properties.Count - 1 do
|
||
F_NormBase.ReDefineConstrInterfacesByProperty(Compon, PProperty(Compon.Properties[propnum]), True);
|
||
Compon.SaveInterfacesByServFields;
|
||
end;
|
||
end
|
||
else
|
||
begin
|
||
Compon.SaveComponent;
|
||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
if ChangedProp or ChangedCompType then
|
||
begin
|
||
Compon.SavePropertiesByServFields(Compon.ID); //Compon.SaveProperties(Compon.ID);
|
||
Compon.SaveInterfacesByServFields; //Compon.SaveInterfaces(Compon.ID);
|
||
end;
|
||
|
||
if cbAutoAddInter.Checked then
|
||
begin
|
||
for propnum := 0 to Compon.Properties.Count - 1 do
|
||
F_NormBase.ReDefineConstrInterfacesByProperty(Compon, PProperty(Compon.Properties[propnum]), True);
|
||
Compon.SaveInterfacesByServFields;
|
||
end;
|
||
|
||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
|
||
if ChangedCCE then
|
||
Compon.SaveCableCanalConnectorsByServFields;
|
||
|
||
if ATrgCatalog <> nil then
|
||
begin
|
||
FReloadNBTree := true;
|
||
F_NormBase.DM.DelCatRelByIDCompon(Compon.ID);
|
||
end;
|
||
end;
|
||
|
||
if ATrgCatalog <> nil then
|
||
begin
|
||
F_NormBase.AppendToCatalRel(ATrgCatalog.ID, Compon.ID);
|
||
Compon.TreeViewNode := TF_Main(GForm).MakeNodeForNewComponent(ATrgCatalog.TreeViewNode, Compon);
|
||
ATrgCatalog.AddComponentToList(Compon);
|
||
end;
|
||
Compon.Free;
|
||
|
||
Application.ProcessMessages;
|
||
end;
|
||
except
|
||
on E: Exception do AddExceptionToLogExt(ClassName, 'AddUpdateComponToNB', E.Message);
|
||
end;
|
||
end;
|
||
|
||
procedure TF_MasterUpdatePrice.AddNormResInfoToListView(const ACypher, AName, AIzm: String; AID: Integer; AListView: TRzListView);
|
||
var
|
||
Listitem: TListItem;
|
||
begin
|
||
Listitem := AListView.Items.Add;
|
||
Listitem.Caption := ACypher;
|
||
Listitem.SubItems.Add(AName);
|
||
Listitem.SubItems.Add(AIzm);
|
||
Listitem.Data := Pointer(AID);
|
||
end;
|
||
|
||
//procedure TF_MasterUpdatePrice.AddRelatedControlWithMenuItem(AControl: TWinControl; ATag: Integer);
|
||
//begin
|
||
// AControl.Tag := ATag;
|
||
// FControlsRelatedToMenuItems.Add(AControl);
|
||
//end;
|
||
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||
//function TF_MasterUpdatePrice.CutBeginZeroDefisInArticle(const AArtNo: String): String;
|
||
//begin
|
||
// Result := AArtNo;
|
||
// if (Length(Result) > 1) and (Result[2] = '-') then
|
||
// begin
|
||
// delete(Result, 1, 2);
|
||
// end;
|
||
//
|
||
// while Length(Result) > 0 do
|
||
// begin
|
||
// case Result[1] of
|
||
// '0', '-':
|
||
// delete(Result, 1, 1);
|
||
// else
|
||
// begin
|
||
// Break; //// BREAK ////
|
||
// end;
|
||
// end;
|
||
// end;
|
||
//end;
|
||
|
||
procedure TF_MasterUpdatePrice.DropAllSelections;
|
||
begin
|
||
DropSelectionForFile;
|
||
DropSelectionForSheet;
|
||
DropSelectionForPrices;
|
||
|
||
FIsLoadedCurrency := false;
|
||
ZeroMemory(@FActiveCurrency, SizeOf(TCurrency));
|
||
ClearComboBoxRz(cbCurrency);
|
||
end;
|
||
|
||
procedure TF_MasterUpdatePrice.DropSelectionForFile;
|
||
begin
|
||
edFileNameXls.Text := '';
|
||
FIsOpenedXlsFile := false;
|
||
FIsLoadedXlsFile := false;
|
||
//FActiveTabXFSheetInfo := nil;
|
||
FActiveSheetComponPropsInfo := nil;
|
||
|
||
FOpenedFileName := '';
|
||
FXLSPreview.ClearPages; //ClearXlsDataFromForm;
|
||
end;
|
||
|
||
procedure TF_MasterUpdatePrice.DropSelectionForSheet;
|
||
begin
|
||
DropSelectionForPrices;
|
||
|
||
FISLoadedComponents := false;
|
||
FISLoadedResources := false;
|
||
FISLoadedNorms := false;
|
||
|
||
ClearNodes;
|
||
end;
|
||
|
||
procedure TF_MasterUpdatePrice.DropSelectionForPrices;
|
||
begin
|
||
FISLoadedComponentPrices := false;
|
||
FISLoadedResourcePrices := false;
|
||
end;
|
||
|
||
procedure TF_MasterUpdatePrice.ClearNodes;
|
||
var
|
||
i: integer;
|
||
Node: TFlYNode;
|
||
begin
|
||
for i := 0 to tvComponents.Items.Count - 1 do
|
||
begin
|
||
Node := tvComponents.Items[i];
|
||
if Node.Data <> nil then
|
||
if TObject(Node.Data) is TNodeObjectInfo then
|
||
begin
|
||
TNodeObjectInfo(Node.Data).Free;
|
||
Node.Data := nil;
|
||
end;
|
||
end;
|
||
tvComponents.Items.Clear;
|
||
end;
|
||
|
||
procedure TF_MasterUpdatePrice.ClearStepSheetInfo;
|
||
var
|
||
i: Integer;
|
||
CurrPage: TRzTabSheet;
|
||
StepSheetInfo: TStepSheetInfo;
|
||
begin
|
||
for i := 0 to pcUpdatePrice.PageCount - 1 do
|
||
begin
|
||
CurrPage := pcUpdatePrice.Pages[i];
|
||
StepSheetInfo := TStepSheetInfo(CurrPage.Tag);
|
||
CurrPage.Tag := 0;
|
||
FreeAndNil(StepSheetInfo);
|
||
end;
|
||
end;
|
||
|
||
procedure TF_MasterUpdatePrice.ClearXlsDataFromForm;
|
||
begin
|
||
while pcXFSheets.PageCount > 0 do
|
||
pcXFSheets.Pages[0].Free;
|
||
end;
|
||
|
||
procedure TF_MasterUpdatePrice.CreateColumnsInListView(AListView: TRzListView; AColNames: TStringList; AWidthList: TIntList);
|
||
var
|
||
i: Integer;
|
||
|
||
procedure AddColumnToListView(const AColName: String; AWidth: Integer);
|
||
var
|
||
NewColumn: TListColumn;
|
||
begin
|
||
if AColName <> '' then
|
||
begin
|
||
NewColumn := AListView.Columns.Add;
|
||
NewColumn.Caption := AColName;
|
||
NewColumn.Width := AWidth;
|
||
end;
|
||
end;
|
||
begin
|
||
AListView.ViewStyle := vsReport;
|
||
AListView.ColumnClick := false;
|
||
AListView.GridLines := true;
|
||
AListView.RowSelect := true;
|
||
AListView.ReadOnly := true;
|
||
|
||
AListView.Columns.Clear;
|
||
|
||
if AColNames.Count >= AWidthList.Count then
|
||
for i := 0 to AColNames.Count - 1 do
|
||
AddColumnToListView(AColNames[i], AWidthList[i]);
|
||
end;
|
||
|
||
procedure TF_MasterUpdatePrice.CreateColumnsInListViewFromTVColumns(AListView: TRzListView; ATree: TFlyTreeViewPro; AColIndexes: array of Integer);
|
||
var
|
||
i: Integer;
|
||
ColCount: Integer;
|
||
|
||
TreeColumn: TTreeColumn;
|
||
|
||
ColNames: TStringList;
|
||
ColWidth: TIntList;
|
||
begin
|
||
ColNames := TStringList.Create;
|
||
ColWidth := TIntList.Create;
|
||
|
||
ColCount := Length(AColIndexes);
|
||
for i := 0 to ColCount - 1 do
|
||
begin
|
||
TreeColumn := ATree.Columns[AColIndexes[i]];
|
||
if TreeColumn <> nil then
|
||
begin
|
||
ColNames.Add(TreeColumn.Caption);
|
||
ColWidth.Add(TreeColumn.Width);
|
||
end;
|
||
end;
|
||
|
||
CreateColumnsInListView(AListView, ColNames, ColWidth);
|
||
|
||
FreeAndNil(ColNames);
|
||
FreeAndNil(ColWidth);
|
||
end;
|
||
|
||
function TF_MasterUpdatePrice.CreateStepSheetInfo(ATabSheet: TRzTabSheet; APanelCaption: TRzPanel): TStepSheetInfo;
|
||
begin
|
||
Result := TStepSheetInfo.Create;
|
||
Result.FSheetOwner := ATabSheet;
|
||
Result.FPanelCaption := APanelCaption;
|
||
Result.FCaptionValue := APanelCaption.Caption;
|
||
|
||
ATabSheet.Tag := Integer(Result);
|
||
end;
|
||
|
||
function TF_MasterUpdatePrice.GetCurrStepIndex: Integer;
|
||
begin
|
||
Result := FStepSheets.IndexOf(pcUpdatePrice.ActivePage);
|
||
//if Result = -1 then
|
||
// raise Exception.Create('Not accessible step page');
|
||
end;
|
||
|
||
function TF_MasterUpdatePrice.GetPriceInXLSUOM(APrice: Double; ANodeComponInfo: TNodeObjectInfo): Double;
|
||
begin
|
||
Result := APrice;
|
||
if ANodeComponInfo.IsTransformPrice then
|
||
Result := FloatInUOM(APrice, FXLSUOM, umMetr);
|
||
end;
|
||
|
||
function TF_MasterUpdatePrice.GetPriceInNBUOM(APrice: Double; ANodeComponInfo: TNodeObjectInfo): Double;
|
||
begin
|
||
Result := APrice;
|
||
if ANodeComponInfo.IsTransformPrice then
|
||
Result := FloatInUOM(APrice, umMetr, FXLSUOM);
|
||
end;
|
||
|
||
function TF_MasterUpdatePrice.GetStructLevelCombo(ALevelNum: Integer): TRZComboBox;
|
||
begin
|
||
Result := TRzComboBox(FindComponent('cbStructLevel'+IntToStr(ALevelNum)));
|
||
end;
|
||
|
||
function TF_MasterUpdatePrice.GetStructLevelFromName(const AName, ANamePrefix: string): Integer;
|
||
var
|
||
CharCount: Integer;
|
||
begin
|
||
Result := -1;
|
||
CharCount := Length(AName) - Length(ANamePrefix);
|
||
if CharCount > 0 then
|
||
Result := StrToIntDef(Copy(AName, Length(ANamePrefix)+1, CharCount), Result);
|
||
end;
|
||
|
||
//function TF_MasterUpdatePrice.GetRelatedControlWithMenuItemByTag(ATag: Integer): TWinControl;
|
||
//var
|
||
// RelatedControl: TWinControl;
|
||
// i: integer;
|
||
//begin
|
||
// Result := nil;
|
||
// for i := 0 to FControlsRelatedToMenuItems.Count - 1 do
|
||
// begin
|
||
// RelatedControl := TWinControl(FControlsRelatedToMenuItems[i]);
|
||
// if RelatedControl.Tag = ATag then
|
||
// begin
|
||
// Result := RelatedControl;
|
||
// Break; //// BREAK ////
|
||
// end;
|
||
// end;
|
||
//end;
|
||
|
||
procedure TF_MasterUpdatePrice.ImportNormResToBase;
|
||
var
|
||
Node: TFlyNode;
|
||
NodeObjInfo: TNodeObjectInfo;
|
||
SrcObjInfo: TObjectList;
|
||
i: Integer;
|
||
|
||
CanAddObjToList: Boolean;
|
||
DirName: String;
|
||
|
||
NBResource: TNBResource;
|
||
NBNorm: TNBNorm;
|
||
NBSpravochnik: TSpravochnik;
|
||
begin
|
||
try
|
||
SrcObjInfo := TObjectList.Create(false);
|
||
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
for i := 0 to tvComponents.Items.Count - 1 do
|
||
begin
|
||
Node := tvComponents.Items[i];
|
||
if Node.StateIndex = STATE_CHECKED then
|
||
if Node.Data <> nil then
|
||
if TObject(Node.Data) is TNodeObjectInfo then
|
||
begin
|
||
NodeObjInfo := TNodeObjectInfo(Node.Data);
|
||
CanAddObjToList := true;
|
||
|
||
if FFormMode = fmImportResources then
|
||
// <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
if GetResourceTypeName(NodeObjInfo.ResType) = '' then
|
||
CanAddObjToList := false;
|
||
|
||
if CanAddObjToList then
|
||
SrcObjInfo.Add(NodeObjInfo);
|
||
end;
|
||
end;
|
||
|
||
if SrcObjInfo.Count > 0 then
|
||
begin
|
||
BeginProgress('', SrcObjInfo.Count);
|
||
try
|
||
DirName := cMasterUpdatePrice_Msg6 +' "' + ExtractFileNameOnly(FXLSPreview.FileName)+'" '+DateTimeToStr(Now);
|
||
NBSpravochnik := TF_Main(GForm).GSCSBase.NBSpravochnik;
|
||
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
for i := 0 to SrcObjInfo.Count - 1 do
|
||
begin
|
||
NodeObjInfo := TNodeObjectInfo(SrcObjInfo[i]);
|
||
case FFormMode of
|
||
fmImportResources:
|
||
begin
|
||
NBResource := TNBResource.Create(GForm);
|
||
NBResource.Cypher := NodeObjInfo.Cypher;
|
||
NBResource.Name := NodeObjInfo.Name;
|
||
NBResource.Izm := NodeObjInfo.Izm;
|
||
NBResource.Price := NodeObjInfo.NewPriceInComponCurrency;
|
||
NBResource.RType := NodeObjInfo.ResType;
|
||
NBSpravochnik.AddResource(NBResource);
|
||
|
||
NBResource.Save(meMake);
|
||
TF_Main(GForm).DM.InsertToDirTypeItemByDirTypeName(ditNBResource, DirName, NBResource.ID, @FInsertedDirTypeID);
|
||
end;
|
||
fmImportNorms:
|
||
begin
|
||
NBNorm := TNBNorm.Create(GForm);
|
||
NBNorm.Cypher := NodeObjInfo.Cypher;
|
||
NBNorm.Name := NodeObjInfo.Name;
|
||
NBNorm.Izm := NodeObjInfo.Izm;
|
||
NBSpravochnik.AddNorm(NBNorm);
|
||
|
||
NBNorm.Save(meMake);
|
||
TF_Main(GForm).DM.InsertToDirTypeItemByDirTypeName(ditNBNorm, DirName, NBNorm.ID, @FInsertedDirTypeID);
|
||
end;
|
||
end;
|
||
StepProgress;
|
||
end;
|
||
finally
|
||
EndProgress;
|
||
end;
|
||
end;
|
||
FreeAndNil(SrcObjInfo);
|
||
except
|
||
on E: Exception do AddExceptionToLogEx('TF_MasterUpdatePrice.ImportNormResToBase', E.Message);
|
||
end;
|
||
end;
|
||
|
||
procedure TF_MasterUpdatePrice.LoadColumnsToStrings(AStrings: TStrings; AColumnCount: Integer);
|
||
var
|
||
i: Integer;
|
||
begin
|
||
AStrings.Clear;
|
||
AStrings.Add(cNoDefined);
|
||
if AColumnCount > 0 then
|
||
begin
|
||
AStrings.BeginUpdate;
|
||
try
|
||
for i := 0 to AColumnCount - 1 do
|
||
begin
|
||
AStrings.Add(DecToABC(i+1));
|
||
//AStrings.Add(DecToABC(i+1)+' '+IntToStr(i+1)+' '+IntToStr(ABCToDec(DecToABC(i+1))));
|
||
//if (i+1) <> ABCToDec(DecToABC(i+1)) then
|
||
// EmptyProcedure;
|
||
end;
|
||
finally
|
||
AStrings.EndUpdate;
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
procedure TF_MasterUpdatePrice.LoadComponentsFromXF;
|
||
var
|
||
ArticulNoList: TStringList;
|
||
PriceList: TStringList;
|
||
NewNameList: TStringList;
|
||
CanUsePosition: Boolean;
|
||
|
||
CurrArtNo: String;
|
||
CurrPriceStr: String;
|
||
CurrPrice: Double;
|
||
CurrName: String;
|
||
|
||
StructLevelName: String;
|
||
StructLevelIndex: Integer;
|
||
|
||
ComponFieldNames: TStringList;
|
||
FNArtNo: string;
|
||
QSelect: TpFIBQuery;
|
||
QSelectSmart: TpFIBQuery;
|
||
QSelSrc: TpFIBQuery;
|
||
|
||
NewNode: TFlyNode;
|
||
NewNodeComponInfo: TNodeObjectInfo;
|
||
Node: TFlyNode;
|
||
NodeComponInfo: TNodeObjectInfo;
|
||
ptrComponCurrencyM: PObjectCurrencyRel;
|
||
SprCurrency: TNBCurrency;
|
||
SprComponentType: TNBComponentType;
|
||
|
||
XLSRowInfo: TXLSRowInfo;
|
||
XLSRowInfoList: TObjectList;
|
||
|
||
CurrencyValue: Double;
|
||
|
||
i, j: Integer;
|
||
LackComponsPos: TIntList; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> xls
|
||
ComponPos: Integer;
|
||
// Tolik 28/08/2019 --
|
||
//OldTick, CurrTick: Cardinal;
|
||
OldTick, CurrTick: DWord;
|
||
//
|
||
|
||
ActiveTabXFSheetInfo: TTabXFSheetInfo;
|
||
ActiveSheetComponPropsInfo: TSheetComponPropsInfo;
|
||
NBAllArticles: TStringList;
|
||
StartRow: integer;
|
||
begin
|
||
ClearNodes;
|
||
ActiveTabXFSheetInfo := FXLSPreview.ActiveTabXFSheetInfo; //FActiveTabXFSheetInfo;
|
||
if ActiveTabXFSheetInfo <> nil then
|
||
begin
|
||
ActiveSheetComponPropsInfo := TSheetComponPropsInfo(ActiveTabXFSheetInfo.RelatedObject);
|
||
|
||
Screen.Cursor := crHourGlass;
|
||
try
|
||
NBAllArticles := TStringList.Create;
|
||
ArticulNoList := TStringList.Create;
|
||
PriceList := TStringList.Create;
|
||
NewNameList := TStringList.Create;
|
||
NoFindedArticles.Clear;
|
||
FindedArticles.Clear;
|
||
|
||
XLSRowInfoList := TObjectList.Create(true);
|
||
|
||
BeginProgress;
|
||
try
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
try
|
||
StartRow := StrToint(EdtStartPos.Text);
|
||
except
|
||
StartRow := 1;
|
||
end;
|
||
for i := (StartRow - 1) to ActiveTabXFSheetInfo.RowCount - 1 do
|
||
//for i := 0 to FXLSPreview.Xf.Workbook.Sheets[ActiveTabXFSheetInfo.SheetIndex].Rows.Count - 1 do
|
||
begin
|
||
CurrArtNo := FXLSPreview.Xf.Workbook.Sheets[ActiveTabXFSheetInfo.SheetIndex].Cells[i, ActiveSheetComponPropsInfo.ArtNoColumIndex].ValueAsString;
|
||
if CurrArtNo <> '' then
|
||
NBAllArticles.Add(CurrArtNo);
|
||
|
||
CurrPriceStr := '';
|
||
if ActiveSheetComponPropsInfo.PriceColumIndex > 0 then
|
||
CurrPriceStr := FXLSPreview.Xf.Workbook.Sheets[ActiveTabXFSheetInfo.SheetIndex].Cells[i, ActiveSheetComponPropsInfo.PriceColumIndex].ValueAsString
|
||
else
|
||
begin
|
||
CurrPriceStr := DefPrice.Text;
|
||
end;
|
||
CurrName := '';
|
||
if ActiveSheetComponPropsInfo.NameColumIndex > 0 then
|
||
CurrName := FXLSPreview.Xf.Workbook.Sheets[ActiveTabXFSheetInfo.SheetIndex].Cells[i, ActiveSheetComponPropsInfo.NameColumIndex].ValueAsString;
|
||
|
||
CurrPrice := 0;
|
||
CurrPriceStr := CorrectStrToFloat(CurrPriceStr);
|
||
if CurrPriceStr <> '' then
|
||
begin
|
||
CanUsePosition := true;
|
||
try
|
||
CurrPrice := StrToFloatU(CurrPriceStr);
|
||
except
|
||
CanUsePosition := false;
|
||
end;
|
||
if (CurrArtNo <> '') and CanUsePosition then
|
||
begin
|
||
ArticulNoList.Add(CurrArtNo);
|
||
PriceList.Add(CurrPriceStr);
|
||
NewNameList.Add(CurrName);
|
||
|
||
XLSRowInfo := TXLSRowInfo.Create;
|
||
XLSRowInfo.FRowIndex := i;
|
||
XLSRowInfo.FArtNo := CurrArtNo;
|
||
XLSRowInfo.FName := CurrName;
|
||
XLSRowInfo.FPrice := CurrPrice;
|
||
if ActiveSheetComponPropsInfo.IzmColumIndex > 0 then
|
||
XLSRowInfo.FIzm := FXLSPreview.Xf.Workbook.Sheets[ActiveTabXFSheetInfo.SheetIndex].Cells[i, ActiveSheetComponPropsInfo.IzmColumIndex].ValueAsString;
|
||
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
for j := 0 to cntStructLevels - 1 do
|
||
begin
|
||
StructLevelName := '';
|
||
StructLevelIndex := ActiveSheetComponPropsInfo.StructLevelsIndex[j];
|
||
if StructLevelIndex > 0 then
|
||
begin
|
||
StructLevelName := FXLSPreview.Xf.Workbook.Sheets[ActiveTabXFSheetInfo.SheetIndex].Cells[i, StructLevelIndex].ValueAsString;
|
||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
if RemoveSymbolFromStr(StructLevelName, ' ') <> '' then
|
||
XLSRowInfo.FCatalogs.Add(Trim(StructLevelName));
|
||
end;
|
||
end;
|
||
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
//ActiveSheetComponPropsInfo.FMT.First;
|
||
//while Not ActiveSheetComponPropsInfo.FMT.Eof do
|
||
//begin
|
||
// PropColumnNum := ActiveSheetComponPropsInfo.FMT.FieldByName(fnColumnNum).AsInteger;
|
||
// if PropColumnNum > 0 then
|
||
// begin
|
||
// CellValue := FXLSPreview.Xf.Workbook.Sheets[ActiveTabXFSheetInfo.SheetIndex].Cells[i, PropColumnNum].ValueAsString;
|
||
// // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
// if RemoveSymbolFromStr(StructLevelName, ' ') <> '' then
|
||
// AddGUIDIDToStrings(CellValue, ActiveSheetComponPropsInfo.FMT.FieldByName(fnSysName).AsString, 0, XLSRowInfo.FPropValues);
|
||
// end;
|
||
// ActiveSheetComponPropsInfo.FMT.Next;
|
||
//end;
|
||
|
||
XLSRowInfoList.Add(XLSRowInfo);
|
||
end;
|
||
end;
|
||
end;
|
||
finally
|
||
EndProgress;
|
||
end;
|
||
|
||
{OldTick := GetTickCount;
|
||
QSelect := TF_Main(GForm).DM.Query_Select;
|
||
SetSQLToFIBQuery(QSelect, GetSQLByParams(qtSelect, tnComponent,
|
||
'NOT('+FNArtNo+' = '''')', ComponFieldNames, ''), true);
|
||
CurrTick := GetTickCount - OldTick;
|
||
while Not QSelect.Eof do
|
||
begin
|
||
QSelect.Next;
|
||
end; }
|
||
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||
FNArtNo := fnArticulProducer;
|
||
if ActiveSheetComponPropsInfo.ArtNoType = antDistrib then
|
||
FNArtNo := fnArticulDistributor;
|
||
|
||
//*** <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
ComponFieldNames := TStringList.Create;
|
||
ComponFieldNames.Add(fnID);
|
||
ComponFieldNames.Add(FNArtNo);
|
||
ComponFieldNames.Add(fnName);
|
||
ComponFieldNames.Add(fnPrice);
|
||
ComponFieldNames.Add(fnIDComponentType);
|
||
|
||
LackComponsPos := TIntList.Create;
|
||
|
||
BeginProgress('', ArticulNoList.Count);
|
||
try
|
||
OldTick := GetTickCount;
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
QSelect := TF_Main(GForm).DM.Query_Select;
|
||
QSelectSmart := nil;
|
||
// <20><><EFBFBD><EFBFBD> Smart <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
if cbSmartCompareArtNo.Checked then
|
||
begin
|
||
QSelectSmart := TF_Main(GForm).DM.Query;
|
||
SetSQLToFIBQuery(QSelectSmart, GetSQLByParams(qtSelect, tnComponent,
|
||
'UPPER('+FNArtNo+') CONTAINING :'+FNArtNo, ComponFieldNames, ''), false);
|
||
//''+FNArtNo+' CONTAINING :'+FNArtNo, ComponFieldNames, ''), false);
|
||
end;
|
||
SetSQLToFIBQuery(QSelect, GetSQLByParams(qtSelect, tnComponent,
|
||
'UPPER('+FNArtNo+') = :'+FNArtNo, ComponFieldNames, ''), false);
|
||
|
||
for i := 0 to XLSRowInfoList.Count - 1 do
|
||
//for i := 0 to ArticulNoList.Count - 1 do
|
||
begin
|
||
XLSRowInfo := TXLSRowInfo(XLSRowInfoList[i]);
|
||
|
||
QSelect.Close;
|
||
QSelect.Params[0].AsString := AnsiUpperCase(ArticulNoList[i]);
|
||
QSelect.ExecQuery;
|
||
QSelSrc := QSelect;
|
||
if (QSelect.RecordCount = 0) and (cbSmartCompareArtNo.Checked) then
|
||
begin
|
||
//QSelectSmart.Close;
|
||
//QSelectSmart.Params[0].AsString := AnsiUpperCase(CutBeginZeroDefisInArticle('57535-2'));
|
||
//QSelectSmart.ExecQuery;
|
||
|
||
QSelectSmart.Close;
|
||
QSelectSmart.Params[0].AsString := AnsiUpperCase(CutBeginZeroDefisInArticle(ArticulNoList[i]));
|
||
QSelectSmart.ExecQuery;
|
||
|
||
QSelSrc := QSelectSmart;
|
||
end;
|
||
|
||
if QSelSrc.RecordCount > 0 then
|
||
begin
|
||
while Not QSelSrc.Eof do
|
||
begin
|
||
NewNode := tvComponents.Items.Add(nil, '');
|
||
NewNode.StateIndex := STATE_CHECKED;
|
||
|
||
NewNodeComponInfo := TNodeObjectInfo.Create(NewNode);
|
||
|
||
NewNodeComponInfo.ID := QSelSrc.FN(fnID).AsInteger;
|
||
NewNodeComponInfo.ArtNo := QSelSrc.FN(FNArtNo).AsString; //ArticulNoList[i];
|
||
NewNodeComponInfo.Name := QSelSrc.FN(fnName).AsString;
|
||
NewNodeComponInfo.CurrPrice := QSelSrc.FN(fnPrice).AsFloat;
|
||
NewNodeComponInfo.IsTransformPrice := false;
|
||
SprComponentType := TF_Main(GForm).GSCSBase.NBSpravochnik.GetComponentTypeObjByID(QSelSrc.FN(fnIDComponentType).AsInteger);
|
||
if SprComponentType <> nil then
|
||
NewNodeComponInfo.IsTransformPrice := CheckPriceTransformToUOMByCompType(@SprComponentType.ComponentType.SysName);
|
||
NewNodeComponInfo.NewPriceInXFCurrency := StrToFloatU(PriceList[i]);
|
||
NewNodeComponInfo.NewName := NewNameList[i];
|
||
if XLSRowInfo.FIzm <> '' then
|
||
NewNodeComponInfo.Izm := XLSRowInfo.FIzm;
|
||
NewNodeComponInfo.IDComponType := QSelSrc.FN(fnIDComponentType).AsInteger;
|
||
|
||
NewNodeComponInfo.FCatalogs.Assign(XLSRowInfo.FCatalogs);
|
||
NewNodeComponInfo.FRowIndex := XLSRowInfo.FRowIndex;
|
||
|
||
NewNode.Text := NewNodeComponInfo.ArtNo;
|
||
NewNode.Data := NewNodeComponInfo;
|
||
|
||
NewNode.Cells[ciArtNo] := NewNodeComponInfo.ArtNo;
|
||
NewNode.Cells[ciName] := NewNodeComponInfo.Name;
|
||
|
||
CurrencyValue := GetPriceInXLSUOM(NewNodeComponInfo.CurrPrice, NewNodeComponInfo);
|
||
NewNode.Cells[ciCurrPrice] := FloatToStr(RoundCP(CurrencyValue)) +' '+ NewNodeComponInfo.CurrencyM.NameBrief;
|
||
if cbColumnName.ItemIndex > 0 then //if cbUpdateNames.Checked then
|
||
NewNode.Cells[ciNewName] := NewNodeComponInfo.NewName;
|
||
|
||
FindedArticles.Add(ArticulNoList[i]);
|
||
|
||
QSelSrc.Next;
|
||
end;
|
||
end
|
||
else
|
||
begin
|
||
CurrPriceStr := PriceList[i];
|
||
//if (CurrPriceStr <> '0') and (CurrPriceStr <> '') then
|
||
if ((CurrPriceStr <> '') and (cbColumnPrice.ItemIndex <> 0)) or (cbColumnPrice.ItemIndex = 0) then
|
||
LackComponsPos.Add(i);
|
||
NoFindedArticles.Add(ArticulNoList[i]);
|
||
end;
|
||
StepProgress;
|
||
end;
|
||
|
||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||
if cbAddLackCompons.Checked then
|
||
begin
|
||
for i := 0 to LackComponsPos.Count - 1 do
|
||
begin
|
||
ComponPos := LackComponsPos[i];
|
||
XLSRowInfo := TXLSRowInfo(XLSRowInfoList[ComponPos]);
|
||
|
||
NewNode := tvComponents.Items.Add(nil, '');
|
||
NewNode.StateIndex := STATE_CHECKED;
|
||
|
||
NewNodeComponInfo := TNodeObjectInfo.Create(NewNode);
|
||
|
||
NewNodeComponInfo.ID := 0;
|
||
NewNodeComponInfo.ArtNo := AnsiUpperCase(ArticulNoList[ComponPos]);
|
||
NewNodeComponInfo.Name := NewNameList[ComponPos];
|
||
NewNodeComponInfo.CurrPrice := 0;
|
||
NewNodeComponInfo.IsTransformPrice := false;
|
||
NewNodeComponInfo.NewPriceInXFCurrency := StrToFloatU(PriceList[ComponPos]);
|
||
NewNodeComponInfo.NewPriceInComponCurrency := NewNodeComponInfo.NewPriceInXFCurrency;
|
||
NewNodeComponInfo.NewName := NewNameList[ComponPos];
|
||
if XLSRowInfo.FIzm <> '' then
|
||
NewNodeComponInfo.Izm := XLSRowInfo.FIzm;
|
||
NewNodeComponInfo.FCatalogs.Assign(XLSRowInfo.FCatalogs);
|
||
|
||
NewNodeComponInfo.FRowIndex := XLSRowInfo.FRowIndex;
|
||
|
||
NewNode.Text := NewNodeComponInfo.ArtNo;
|
||
NewNode.Data := NewNodeComponInfo;
|
||
|
||
NewNode.Cells[ciArtNo] := NewNodeComponInfo.ArtNo;
|
||
NewNode.Cells[ciName] := NewNodeComponInfo.Name;
|
||
|
||
CurrencyValue := GetPriceInXLSUOM(NewNodeComponInfo.CurrPrice, NewNodeComponInfo);
|
||
NewNode.Cells[ciCurrPrice] := FloatToStr(RoundCP(CurrencyValue)) +' '+ NewNodeComponInfo.CurrencyM.NameBrief;
|
||
if cbColumnName.ItemIndex > 0 then //if cbUpdateNames.Checked then
|
||
NewNode.Cells[ciNewName] := NewNodeComponInfo.NewName;
|
||
|
||
end;
|
||
end;
|
||
|
||
CurrTick := GetTickCount - OldTick;
|
||
CurrTick := GetTickCount - OldTick;
|
||
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
for i := 0 to tvComponents.Items.Count - 1 do
|
||
begin
|
||
Node := tvComponents.Items[i];
|
||
NodeComponInfo := TNodeObjectInfo(Node.Data);
|
||
if (NodeComponInfo <> nil) then
|
||
begin
|
||
if NodeComponInfo.ID > 0 then
|
||
begin
|
||
ptrComponCurrencyM := TF_Main(GForm).DM.GetComponCurrencyByMainFldFromListOrQuery(NodeComponInfo.ID, ctMain, nil);
|
||
if ptrComponCurrencyM <> nil then
|
||
begin
|
||
SprCurrency := TF_Main(GForm).GSCSBase.NBSpravochnik.GetCurrencyByGUID(ptrComponCurrencyM.Data.GUID);
|
||
NodeComponInfo.CurrencyM := ptrComponCurrencyM.Data;
|
||
if SprCurrency <> nil then
|
||
NodeComponInfo.CurrencyM := SprCurrency.Data;
|
||
FreeMem(ptrComponCurrencyM);
|
||
|
||
CurrencyValue := GetPriceInXLSUOM(NodeComponInfo.CurrPrice, NodeComponInfo);
|
||
Node.Cells[ciCurrPrice] := FloatToStr(RoundCP(CurrencyValue)) + ' '+ NodeComponInfo.CurrencyM.NameBrief;
|
||
end;
|
||
end
|
||
else
|
||
begin
|
||
NodeComponInfo.CurrencyM := FActiveCurrency;
|
||
end;
|
||
end;
|
||
end;
|
||
finally
|
||
EndProgress;
|
||
end;
|
||
|
||
//fsComponCountExists.Caption := IntToStr(ArticulNoList.Count - LackComponsPos.Count);
|
||
fsComponCountExists.Caption := IntToStr(FindedArticles.Count);
|
||
fsComponCountLack.Caption := IntToStr(LackComponsPos.Count);
|
||
|
||
FreeAndNil(ComponFieldNames);
|
||
|
||
FreeAndNil(LackComponsPos);
|
||
|
||
FreeAndNil(XLSRowInfoList);
|
||
FreeAndNil(ArticulNoList);
|
||
FreeAndNil(PriceList);
|
||
FreeAndNil(NewNameList);
|
||
FreeAndNil(NBAllArticles);
|
||
//FreeAndNil(FindedArticles);
|
||
//FreeAndNil(NoFindedArticles);
|
||
finally
|
||
Screen.Cursor := crDefault;
|
||
end;
|
||
FISLoadedComponents := true;
|
||
end;
|
||
end;
|
||
|
||
procedure TF_MasterUpdatePrice.LoadComponPricesFromXF;
|
||
var
|
||
ptrComponCurrencyXF: PObjectCurrencyRel;
|
||
Node: TFlyNode;
|
||
NodeComponInfo: TNodeObjectInfo;
|
||
i: Integer;
|
||
|
||
CurrencyValue: Double;
|
||
ptrComponCurrencyM: PObjectCurrencyRel;
|
||
SprCurrency: TNBCurrency;
|
||
begin
|
||
for i := 0 to tvComponents.Items.Count - 1 do
|
||
begin
|
||
Node := tvComponents.Items[i];
|
||
NodeComponInfo := TNodeObjectInfo(Node.Data);
|
||
if NodeComponInfo <> nil then
|
||
begin
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
ptrComponCurrencyM := TF_Main(GForm).DM.GetComponCurrencyByMainFldFromListOrQuery(NodeComponInfo.ID, ctMain, nil);
|
||
if ptrComponCurrencyM <> nil then
|
||
begin
|
||
SprCurrency := TF_Main(GForm).GSCSBase.NBSpravochnik.GetCurrencyByGUID(ptrComponCurrencyM.Data.GUID);
|
||
NodeComponInfo.CurrencyM := ptrComponCurrencyM.Data;
|
||
if SprCurrency <> nil then
|
||
NodeComponInfo.CurrencyM := SprCurrency.Data;
|
||
FreeMem(ptrComponCurrencyM);
|
||
|
||
CurrencyValue := GetPriceInXLSUOM(NodeComponInfo.CurrPrice, NodeComponInfo);
|
||
Node.Cells[ciCurrPrice] := FloatToStr(RoundCP(CurrencyValue)) + ' '+ NodeComponInfo.CurrencyM.NameBrief;
|
||
end;
|
||
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> Excel
|
||
Node.Cells[ciNewPriceInXFCurrency] := FloatToStr(RoundCP(NodeComponInfo.NewPriceInXFCurrency)) + ' '+
|
||
FActiveCurrency.NameBrief;
|
||
Node.Cells[ciNewPriceInComponCurrency] := '?';
|
||
NodeComponInfo.NewPriceInComponCurrency := 0;
|
||
|
||
if NodeComponInfo.CurrencyM.ID = FActiveCurrency.ID then
|
||
begin
|
||
NodeComponInfo.CurrencyXF := NodeComponInfo.CurrencyM;
|
||
NodeComponInfo.NewPriceInComponCurrency := NodeComponInfo.NewPriceInXFCurrency;
|
||
end
|
||
else
|
||
begin
|
||
ptrComponCurrencyXF := TF_Main(GForm).DM.GetComponCurrencyByCurrencyID(NodeComponInfo.ID, FActiveCurrency.ID);
|
||
if ptrComponCurrencyXF <> nil then
|
||
begin
|
||
NodeComponInfo.CurrencyXF := ptrComponCurrencyXF.Data;
|
||
NodeComponInfo.NewPriceInComponCurrency := GetPriceAfterChangeCurrency(NodeComponInfo.NewPriceInXFCurrency,
|
||
NodeComponInfo.CurrencyXF, NodeComponInfo.CurrencyM);
|
||
FreeMem(ptrComponCurrencyXF);
|
||
end
|
||
else
|
||
//*** <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Node.StateIndex := STATE_UNCHECKED;
|
||
end;
|
||
|
||
if NodeComponInfo.NewPriceInComponCurrency <> 0 then
|
||
Node.Cells[ciNewPriceInComponCurrency] := FloatToStr(RoundCP(NodeComponInfo.NewPriceInComponCurrency))+ ' '+
|
||
NodeComponInfo.CurrencyM.NameBrief;
|
||
end;
|
||
end;
|
||
FISLoadedComponentPrices := true;
|
||
end;
|
||
|
||
procedure TF_MasterUpdatePrice.LoadCurrencies(AGUIDToSelect: String);
|
||
begin
|
||
cbCurrency.OnChange := nil;
|
||
TF_Main(GForm).GSCSBase.NBSpravochnik.LoadCurrenciesToStrings(cbCurrency.Items, true);
|
||
cbCurrency.OnChange := cbCurrencyChange;
|
||
|
||
if AGUIDToSelect <> '' then
|
||
SelectItemByGUIDinComboRz(cbCurrency, AGUIDToSelect);
|
||
|
||
FIsLoadedCurrency := true;
|
||
end;
|
||
|
||
procedure TF_MasterUpdatePrice.LoadNormsFromXF;
|
||
var
|
||
CurrCypher: String;
|
||
CurrName: String;
|
||
CurrIzm: String;
|
||
|
||
QSelect: TpFIBQuery;
|
||
|
||
NewNode: TFlyNode;
|
||
NewNodeResourceInfo: TNodeObjectInfo;
|
||
Node: TFlyNode;
|
||
|
||
i: Integer;
|
||
// Tolik 28/08/2019 --
|
||
//OldTick, CurrTick: Cardinal;
|
||
OldTick, CurrTick: DWord;
|
||
//
|
||
|
||
ActiveTabXFSheetInfo: TTabXFSheetInfo;
|
||
ActiveSheetComponPropsInfo: TSheetComponPropsInfo;
|
||
begin
|
||
ClearNodes;
|
||
ActiveTabXFSheetInfo := FXLSPreview.ActiveTabXFSheetInfo; //FActiveTabXFSheetInfo;
|
||
if ActiveTabXFSheetInfo <> nil then
|
||
begin
|
||
ActiveSheetComponPropsInfo := TSheetComponPropsInfo(ActiveTabXFSheetInfo.RelatedObject);
|
||
|
||
Screen.Cursor := crHourGlass;
|
||
try
|
||
tvComponents.OnStateChanging := nil;
|
||
BeginProgress;
|
||
try
|
||
lvExistsObjects.Clear;
|
||
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||
QSelect := TF_Main(GForm).DM.Query_Select;
|
||
SetSQLToFIBQuery(QSelect, GetSQLByParams(qtSelect, tnNBNorms,
|
||
'UPPER('+fnCypher+') = :'+fnCypher, nil, fnID), false);
|
||
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> Excel
|
||
for i := 0 to FXLSPreview.ActiveTabXFSheetInfo.RowCount - 1 do
|
||
begin
|
||
CurrCypher := FXLSPreview.Xf.Workbook.Sheets[ActiveTabXFSheetInfo.SheetIndex].Cells[i, ActiveSheetComponPropsInfo.NormResCypherColumIndex].ValueAsString;
|
||
CurrName := FXLSPreview.Xf.Workbook.Sheets[ActiveTabXFSheetInfo.SheetIndex].Cells[i, ActiveSheetComponPropsInfo.NormResNameColumIndex].ValueAsString;
|
||
CurrIzm := FXLSPreview.Xf.Workbook.Sheets[ActiveTabXFSheetInfo.SheetIndex].Cells[i, ActiveSheetComponPropsInfo.NormResIzmColumIndex].ValueAsString;
|
||
|
||
if CurrCypher <> '' then
|
||
begin
|
||
QSelect.Close;
|
||
QSelect.Params[0].AsString := AnsiUpperCase(CurrCypher);
|
||
QSelect.ExecQuery;
|
||
if QSelect.Eof then
|
||
begin
|
||
NewNode := tvComponents.Items.Add(nil, '');
|
||
NewNode.StateIndex := STATE_CHECKED;
|
||
|
||
NewNodeResourceInfo := TNodeObjectInfo.Create(NewNode);
|
||
|
||
NewNodeResourceInfo.ID := 0;
|
||
NewNodeResourceInfo.Cypher := CurrCypher;
|
||
NewNodeResourceInfo.Name := CurrName;
|
||
NewNodeResourceInfo.Izm := CurrIzm;
|
||
|
||
NewNode.Text := NewNodeResourceInfo.Cypher;
|
||
NewNode.Data := NewNodeResourceInfo;
|
||
|
||
NewNode.Cells[ciCypher] := NewNodeResourceInfo.Cypher;
|
||
NewNode.Cells[ciName] := NewNodeResourceInfo.Name;
|
||
NewNode.Cells[ciIzm] := NewNodeResourceInfo.Izm;
|
||
end
|
||
else
|
||
AddNormResInfoToListView(CurrCypher, CurrName, CurrIzm, QSelect.Fields[0].AsInteger, lvExistsObjects);
|
||
end;
|
||
StepProgress;
|
||
end;
|
||
finally
|
||
EndProgress;
|
||
end;
|
||
tvComponents.OnStateChanging := tvComponentsStateChanging;
|
||
finally
|
||
Screen.Cursor := crDefault;
|
||
end;
|
||
FISLoadedNorms := true;
|
||
end;
|
||
end;
|
||
|
||
procedure TF_MasterUpdatePrice.LoadPropsToCompon(AComponent: TSCSComponent; AComponInfo: TNodeObjectInfo; AChangedProp, AChangedCompType, AChangedCCE: PBoolean);
|
||
var
|
||
AllowSetComponAsLite: Boolean;
|
||
ActiveTabXFSheetInfo: TTabXFSheetInfo;
|
||
ActiveSheetComponPropsInfo: TSheetComponPropsInfo;
|
||
PropColumnNum: Integer;
|
||
CellValue: String;
|
||
CellValueFloat: Double;
|
||
MTPropSysName: String;
|
||
PrefixLen: Integer;
|
||
PropSysName: String;
|
||
|
||
PropValues: TStringList;
|
||
|
||
ChangedProp: Boolean;
|
||
ChangedCompType: Boolean;
|
||
|
||
NBCompType: TNBComponentType;
|
||
NBProperty: TNBProperty;
|
||
TmpPos: Integer;
|
||
ptrProperty: PProperty;
|
||
ptrSuppliesKind: PSuppliesKind;
|
||
SuppliesKindName: String;
|
||
UOMStr: String;
|
||
NBObjectIcon: TNBObjectIcon;
|
||
NBInterf: TNBInterface;
|
||
Interf, Interf1, Interf2: TSCSInterface;
|
||
PortInterfRel: PPortInterfRel;
|
||
GenLastInterfID: Integer;
|
||
IsPriceForSuppliesKind: Boolean;
|
||
|
||
i, j: Integer;
|
||
TempDescr: TStringList;
|
||
TempExistDescr: TStringList;
|
||
Stream: TFileStream;
|
||
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
procedure DefineSection(const ADiametrProp, ASectionProp: String);
|
||
var
|
||
CellValue: String;
|
||
CellValueFloat: Double;
|
||
begin
|
||
CellValue := GetNameFromStringsByGUID(tnCompPropRelation+'.'+ADiametrProp, PropValues);
|
||
if (CellValue <> '') and (GetNameFromStringsByGUID(tnCompPropRelation+'.'+ASectionProp, PropValues) = '') then
|
||
begin
|
||
CellValue := CorrectStrToFloat(CellValue);
|
||
CellValueFloat := StrToFloatDef_My(CellValue, 0);
|
||
if CellValueFloat <> 0 then
|
||
begin
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> = pi*R^2
|
||
CellValueFloat := pi * SQR(CellValueFloat / 2);
|
||
AddGUIDIDToStrings(FloatToStr(CellValueFloat), tnCompPropRelation+'.'+ASectionProp, 0, PropValues);
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
procedure DefineCCEByArticul(const AArticul: String);
|
||
var
|
||
i: integer;
|
||
IDCCE: Integer;
|
||
ptrCableCanalConnector: PCableCanalConnector;
|
||
begin
|
||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
IDCCE := TF_Main(GForm).FNormBase.DM.GetIntFromTable(tnComponent, fnID, fnArticulProducer, AArticul, qmPhisical);
|
||
if IDCCE <> 0 then
|
||
begin
|
||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD>
|
||
ptrCableCanalConnector := AComponent.GetCCEByIDConnector(IDCCE);
|
||
if ptrCableCanalConnector = nil then
|
||
begin
|
||
ptrCableCanalConnector := AComponent.AddCCEToList(IDCCE, -1);
|
||
ptrCableCanalConnector.IsNew := true;
|
||
if AChangedCCE <> nil then
|
||
AChangedCCE^ := true;
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
function GetCellValueByProp(const APropSysName: String): String;
|
||
var
|
||
idx: Integer;
|
||
begin
|
||
Result := '';
|
||
idx := IndexOfGUIDInStrings(APropSysName, PropValues);
|
||
if idx <> -1 then
|
||
Result := PropValues[idx];
|
||
end;
|
||
|
||
begin
|
||
try
|
||
ActiveTabXFSheetInfo := FXLSPreview.ActiveTabXFSheetInfo;
|
||
ActiveSheetComponPropsInfo := TSheetComponPropsInfo(ActiveTabXFSheetInfo.RelatedObject);
|
||
ActiveSheetComponPropsInfo.FMT.First;
|
||
|
||
AllowSetComponAsLite := true;
|
||
ChangedProp := false;
|
||
ChangedCompType := false;
|
||
if AChangedCCE <> nil then
|
||
AChangedCCE^ := false;
|
||
PropValues := nil;
|
||
GenLastInterfID := 0;
|
||
|
||
PrefixLen := Length(tnCompPropRelation+'.');
|
||
while Not ActiveSheetComponPropsInfo.FMT.Eof do
|
||
begin
|
||
PropColumnNum := ActiveSheetComponPropsInfo.FMT.FieldByName(fnColumnNum).AsInteger;
|
||
if PropColumnNum > 0 then
|
||
begin
|
||
CellValue := FXLSPreview.Xf.Workbook.Sheets[ActiveTabXFSheetInfo.SheetIndex].Cells[AComponInfo.FRowIndex, PropColumnNum-1].ValueAsString;
|
||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
if RemoveSymbolFromStr(CellValue, ' ') <> '' then
|
||
begin
|
||
MTPropSysName := ActiveSheetComponPropsInfo.FMT.FieldByName(fnSysName).AsString;
|
||
if PropValues = nil then
|
||
PropValues := TStringList.Create;
|
||
AddGUIDIDToStrings(CellValue, MTPropSysName, 0, PropValues);
|
||
|
||
//// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
// TmpPos := Pos(tnCompPropRelation+'.', MTPropSysName);
|
||
// if TmpPos = 1 then
|
||
// begin
|
||
// PropSysName := Copy(MTPropSysName, PrefixLen+1, Length(MTPropSysName) - PrefixLen);
|
||
// // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> SYSNAME
|
||
// NBProperty := F_NormBase.GSCSBase.NBSpravochnik.GetPropertyBySysName(PropSysName);
|
||
// // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
// if NBProperty = nil then
|
||
// NBProperty := F_NormBase.GSCSBase.NBSpravochnik.GetPropertyByName(PropSysName);
|
||
// if NBProperty <> nil then
|
||
// begin
|
||
// // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
|
||
// if Not AComponent.AssignedPropertyBySysName(PropSysName) then
|
||
// begin
|
||
// ptrProperty := AComponent.GetPropertyAsNew;
|
||
// NBProperty.AssignToPProperty(ptrProperty);
|
||
// end;
|
||
// AComponent.SetPropertyValueAsString(PropSysName, GetPropStrValueByDisplay(CellValue, PropSysName, NBProperty.PropertyData.IDDataType, TF_Main(AComponent.ActiveForm).FUOM));
|
||
// ChangedProp := true;
|
||
// end;
|
||
// end
|
||
// else
|
||
// begin
|
||
// // <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
// if MTPropSysName = fnComponentType then
|
||
// begin
|
||
// if AComponent.ID_ComponentType = 0 then
|
||
// begin
|
||
// // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> GUID
|
||
// NBCompType := F_NormBase.GSCSBase.NBSpravochnik.GetComponentTypeByGUID(CellValue);
|
||
//
|
||
// // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SYS_NAME
|
||
// //if NBCompType = nil then
|
||
// //begin
|
||
// // PropGUID := '';
|
||
// // ctsnCable {A1E3766B-4306-4825-AAA8-7385321233EC}
|
||
// // ctsnSocket {133728E3-D381-4B88-882A-70D051475D4C}
|
||
// // ctsnPatchPanel {ED263346-F61C-4A69-98F4-5094287F39EF}
|
||
// // ctsnPatchCord {9527496D-3FAE-4F0F-A44F-DEDC51BBC8B5}
|
||
// // ctsnAdapter {04EE3BAB-E345-47E1-B53A-F1AB9C73B939}
|
||
// // ctsnModule {DCB31978-3D85-4DB9-B9FC-8E0407B09A37}
|
||
// // ctsnBox {1C134A31-B805-4F8B-B361-03587D1E5CE0}
|
||
// // ctsnOFCable {6C5D9FFE-8F99-49A0-BDB6-F59A778B9C03}
|
||
// // ctsnFrame {DD4EFEEA-0263-40E3-AFBE-795B032D2CAE}
|
||
// // ctsnOther {B5D47C23-0DD7-4C27-8878-CE02D2FCAB97}
|
||
// // ctsnAccessory {0B8B2B89-9259-4688-9553-C85FED94D228}
|
||
// // ctsn19InchPanel {DCAD62C4-B099-4E1F-B984-7C87F5AE90D0}
|
||
// // ctsnOFConnector {7427141E-9C4E-4864-91B3-D26AC17B5C0D}
|
||
// // ctsnOFModule {9F29B8C0-CC1F-4F85-BD53-9F05FA0BD87E}
|
||
// //
|
||
// // NBCompType := F_NormBase.GSCSBase.NBSpravochnik.GetComponentTypeObjBySysName('');
|
||
// //end;
|
||
//
|
||
// // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
// if NBCompType = nil then
|
||
// NBCompType := F_NormBase.GSCSBase.NBSpravochnik.GetComponentTypeByName(CellValue);
|
||
//
|
||
// if NBCompType <> nil then
|
||
// begin
|
||
// AComponent.ID_ComponentType := NBCompType.ComponentType.ID;
|
||
// AComponent.LoadComponentType;
|
||
// AComponent.LoadPropertyesFromComponentType;
|
||
//
|
||
// ChangedCompType := true;
|
||
// end;
|
||
// end;
|
||
// end
|
||
// else if MTPropSysName = AnsiUpperCase(fnSign) then
|
||
// begin
|
||
// AComponent.NameShort := CellValue;
|
||
// end;
|
||
// end;
|
||
// //AddGUIDIDToStrings(CellValue, ActiveSheetComponPropsInfo.FMT.FieldByName(fnSysName).AsString, 0, XLSRowInfo.FPropValues);
|
||
end;
|
||
end;
|
||
ActiveSheetComponPropsInfo.FMT.Next;
|
||
end;
|
||
|
||
if PropValues <> nil then
|
||
begin
|
||
if PropValues.Count > 0 then
|
||
begin
|
||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||
DefineSection(pnOutDiametr, pnOutSection);
|
||
DefineSection(pnInDiametr, pnInSection);
|
||
end;
|
||
|
||
for i := 0 to PropValues.Count - 1 do
|
||
begin
|
||
CellValue := PropValues[i];
|
||
MTPropSysName := GetGUIDFromStrings(PropValues, i);
|
||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
TmpPos := Pos(tnCompPropRelation+'.', MTPropSysName);
|
||
if TmpPos = 1 then
|
||
begin
|
||
PropSysName := Copy(MTPropSysName, PrefixLen+1, Length(MTPropSysName) - PrefixLen);
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> SYSNAME
|
||
NBProperty := F_NormBase.GSCSBase.NBSpravochnik.GetPropertyBySysName(PropSysName);
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
if NBProperty = nil then
|
||
NBProperty := F_NormBase.GSCSBase.NBSpravochnik.GetPropertyByName(PropSysName);
|
||
if NBProperty <> nil then
|
||
begin
|
||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
|
||
ptrProperty := AComponent.GetPropertyBySysName(PropSysName);
|
||
if ptrProperty = nil then
|
||
//if Not AComponent.AssignedPropertyBySysName(PropSysName) then
|
||
begin
|
||
ptrProperty := AComponent.GetPropertyAsNew;
|
||
ptrProperty.IsNew := true;
|
||
NBProperty.AssignToPProperty(ptrProperty);
|
||
end
|
||
else
|
||
begin
|
||
ptrProperty.IsModified := true;
|
||
end;
|
||
// <20><><EFBFBD><EFBFBD> Float, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
if NBProperty.PropertyData.IDDataType = dtFloat then
|
||
CellValue := CorrectStrToFloat(CellValue);
|
||
AComponent.SetPropertyValueAsString(PropSysName, GetPropStrValueByDisplay(CellValue, PropSysName, NBProperty.PropertyData.IDDataType, TF_Main(AComponent.ActiveForm).FUOM));
|
||
ChangedProp := true;
|
||
end;
|
||
end
|
||
else
|
||
begin
|
||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
if MTPropSysName = fnComponentType then
|
||
begin
|
||
if AComponent.ID_ComponentType = 0 then
|
||
begin
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> GUID
|
||
NBCompType := F_NormBase.GSCSBase.NBSpravochnik.GetComponentTypeByGUID(CellValue);
|
||
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
if NBCompType = nil then
|
||
NBCompType := F_NormBase.GSCSBase.NBSpravochnik.GetComponentTypeByName(CellValue);
|
||
|
||
if NBCompType <> nil then
|
||
begin
|
||
AComponent.ID_ComponentType := NBCompType.ComponentType.ID;
|
||
AComponent.LoadComponentType;
|
||
AComponent.LoadPropertyesFromComponentType;
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||
for j := 0 to AComponent.Properties.Count - 1 do
|
||
begin
|
||
ptrProperty := AComponent.Properties[j];
|
||
ptrProperty.IsNew := true;
|
||
end;
|
||
|
||
AComponent.IsLine := GetIsLineByComponType(NBCompType.ComponentType);
|
||
|
||
ChangedCompType := true;
|
||
end;
|
||
end;
|
||
end
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
else if MTPropSysName = AnsiUpperCase(fnSign) then
|
||
begin
|
||
AComponent.NameShort := CellValue;
|
||
end
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
else if MTPropSysName = AnsiUpperCase(fnDescription) then
|
||
begin
|
||
if Trim(CellValue) <> '' then
|
||
begin
|
||
TempDescr := TStringList.Create;
|
||
TempDescr.Text := Trim(CellValue);
|
||
if aComponent.Description = nil then
|
||
aComponent.Description := TMemoryStream.Create;
|
||
if cbAddToDescr.Checked then
|
||
begin
|
||
TempExistDescr := TStringList.Create;
|
||
aComponent.Description.Position := 0;
|
||
TempExistDescr.LoadFromStream(aComponent.Description);
|
||
aComponent.Description.Position := 0;
|
||
if Pos(Trim(CellValue), TempExistDescr.Text) <= 0 then
|
||
begin
|
||
if Trim(TempExistDescr.Text) <> '' then
|
||
TempDescr.Text := Trim(CellValue) + #13#10 + Trim(TempExistDescr.Text);
|
||
aComponent.Description.Clear;
|
||
aComponent.Description.Position := 0;
|
||
TempDescr.SaveToStream(aComponent.Description);
|
||
end;
|
||
TempDescr.Free;
|
||
TempExistDescr.Free;
|
||
end
|
||
else
|
||
begin
|
||
aComponent.Description.Clear;
|
||
aComponent.Description.Position := 0;
|
||
TempDescr.SaveToStream(aComponent.Description);
|
||
TempDescr.Free;
|
||
end;
|
||
end;
|
||
end
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
else if AnsiUpperCase(MTPropSysName) = 'IMAGE' then
|
||
begin
|
||
if aComponent.Picture = nil then
|
||
aComponent.Picture := TMemoryStream.Create;
|
||
aComponent.Picture.Clear;
|
||
aComponent.Picture.Position;
|
||
try
|
||
if FileExists(Trim(CellValue)) then
|
||
begin
|
||
Stream := TFileStream.Create(Trim(CellValue), fmOpenReadWrite);
|
||
Stream.Position := 0;
|
||
aComponent.Picture.Position := 0;
|
||
aComponent.Picture.CopyFrom(Stream, 0);
|
||
aComponent.Picture.Position := 0;
|
||
FreeAndNil(Stream);
|
||
end;
|
||
except
|
||
on E: Exception do
|
||
ShowMessage(cAddComponent_Msg5);
|
||
end;
|
||
end
|
||
// <20><>. <20><><EFBFBD>.
|
||
else if MTPropSysName = AnsiUpperCase(fnUOM) then
|
||
begin
|
||
AComponent.Izm := CellValue;
|
||
end
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
else if MTPropSysName = fnSuppliesKindUnitKolvo then
|
||
begin
|
||
CellValue := CorrectStrToFloat(CellValue);
|
||
CellValueFloat := StrToFloatDef_My(CellValue, 0);
|
||
if CellValueFloat > 0 then
|
||
begin
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
SuppliesKindName := GetNameFromStringsByGUID(fnSuppliesKindName, PropValues);
|
||
// <20><>.<2E><><EFBFBD>.
|
||
UOMStr := GetNameFromStringsByGUID(fnUOM, PropValues);
|
||
if UOMStr = '' then
|
||
UOMStr := AComponent.Izm;
|
||
if FAllSuppliesKinds = nil then
|
||
FAllSuppliesKinds := F_NormBase.DM.GetAllSuppliesKinds;
|
||
ptrSuppliesKind := GetSuppliesKindByIzmAndKolvo(SuppliesKindName, UOMStr, CellValueFloat, FAllSuppliesKinds);
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
|
||
if ptrSuppliesKind = nil then
|
||
begin
|
||
GetZeroMem(ptrSuppliesKind, SizeOf(TSuppliesKind));
|
||
ptrSuppliesKind.Izm := UOMStr;
|
||
ptrSuppliesKind.UnitKolvo := CellValueFloat;
|
||
ptrSuppliesKind.Name := SuppliesKindName;
|
||
ptrSuppliesKind.NameTradUOM := ptrSuppliesKind.Name;
|
||
ptrSuppliesKind.IzmTradUOM := ptrSuppliesKind.Izm;
|
||
ptrSuppliesKind.UnitKolvoTradUOM := ptrSuppliesKind.UnitKolvo;
|
||
F_NormBase.DM.InsertSuppliesKindToTopDirType(ptrSuppliesKind);
|
||
FAllSuppliesKinds.Add(ptrSuppliesKind);
|
||
end;
|
||
if ptrSuppliesKind <> nil then
|
||
begin
|
||
AComponent.IDSuppliesKind := ptrSuppliesKind.ID;
|
||
//23.11.2011 AComponent.PriceSupply := RoundCP(AComponent.Price * ptrSuppliesKind.UnitKolvo);
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>.
|
||
IsPriceForSuppliesKind := GetCellValueByProp(fnIsPriceForSuppliesKind) = '1';
|
||
if IsPriceForSuppliesKind then
|
||
begin
|
||
AComponent.PriceSupply := AComponent.Price;
|
||
AComponent.Price := AComponent.PriceSupply / ptrSuppliesKind.UnitKolvo;
|
||
end
|
||
else
|
||
AComponent.PriceSupply := RoundCP(AComponent.Price * ptrSuppliesKind.UnitKolvo);
|
||
end;
|
||
end;
|
||
end
|
||
// <20><><EFBFBD>
|
||
else if (MTPropSysName = AnsiUpperCase(fnObjectIcon)) or (MTPropSysName = AnsiUpperCase(fnObjectIconDesign)) then
|
||
begin
|
||
NBObjectIcon := F_NormBase.GSCSBase.NBSpravochnik.GetObjectIconByGUID(CellValue); //GetObjectIconByGUIDFromList(CellValue);
|
||
if NBObjectIcon = nil then
|
||
NBObjectIcon := F_NormBase.GSCSBase.NBSpravochnik.GetObjectIconByNameFromList(CellValue);
|
||
if NBObjectIcon <> nil then
|
||
begin
|
||
if MTPropSysName = AnsiUpperCase(fnObjectIcon) then
|
||
AComponent.IDObjectIcon := NBObjectIcon.ID
|
||
else if MTPropSysName = AnsiUpperCase(fnObjectIconDesign) then
|
||
AComponent.IDSymbol := NBObjectIcon.ID;
|
||
end;
|
||
end
|
||
else
|
||
begin
|
||
// <20><><EFBFBD><EFBFBD> <20><>. <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
if Pos('CE_', MTPropSysName) = 1 then
|
||
begin
|
||
DefineCCEByArticul(CellValue);
|
||
end
|
||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> //22.11.2011
|
||
else if Pos(fnInterf, MTPropSysName) = 1 then
|
||
begin
|
||
NBInterf := F_NormBase.GSCSBase.NBSpravochnik.GetInterfaceByGUID(CellValue);
|
||
if NBInterf = nil then
|
||
NBInterf := F_NormBase.GSCSBase.NBSpravochnik.GetInterfaceByName(CellValue);
|
||
if NBInterf <> nil then
|
||
begin
|
||
if GenLastInterfID = 0 then
|
||
GenLastInterfID := GetLastInterfRelID(TF_Main(AComponent.ActiveForm).GDBMode);
|
||
GenLastInterfID := GenLastInterfID + 1;
|
||
Interf := AComponent.GetInterfaceAsNew;
|
||
Interf.IsNew := true;
|
||
Interf.ID := GenLastInterfID;
|
||
Interf.TypeI := itFunctional;
|
||
Interf.Kind := ikSplit;
|
||
Interf.Gender := gtMale;
|
||
Interf.Multiple := biFalse;
|
||
Interf.IsBusy := biFalse;
|
||
Interf.Kolvo := 1;
|
||
Interf.Color := clWhite;
|
||
Interf.AssignFromSpr(NBInterf);
|
||
|
||
if AComponent.Interfaces.Count = 2 then
|
||
begin
|
||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>-<2D><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
|
||
if AComponent.IsCrossComponent then
|
||
begin
|
||
Interf1 := AComponent.Interfaces[0];
|
||
Interf2 := Interf;
|
||
end
|
||
// <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
else if AComponent.ComponentType.SysName = ctsnOFConnector then
|
||
begin
|
||
Interf1 := Interf;
|
||
Interf2 := AComponent.Interfaces[0];
|
||
end;
|
||
|
||
if (Interf1 <> nil) and (Interf2 <> nil) then
|
||
begin
|
||
GetZeroMem(PortInterfRel, SizeOf(TPortInterfRel));
|
||
PortInterfRel.ID := 0;
|
||
PortInterfRel.IsNew := true;
|
||
PortInterfRel.RelType := rtInterfInternalConn;
|
||
PortInterfRel.IDPort := Interf1.ID;
|
||
PortInterfRel.IDInterfRel := Interf2.ID;
|
||
PortInterfRel.UnitInterfKolvo := 1;
|
||
|
||
Interf1.PortInterfRels.Add(PortInterfRel);
|
||
Interf1.DefineInternalRelations;
|
||
|
||
AllowSetComponAsLite := false;
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
//if NBCompType <> nil then
|
||
// if (NBCompType.ComponentType.SysName = ctsn19InchPanel) or (NBCompType.ComponentType.SysName = ctsnPatchPanel) then
|
||
// if Not AComponent.AssignedPropertyBySysName(pnPortWireCount) then
|
||
// begin
|
||
// EmptyProcedure;
|
||
// end;
|
||
|
||
if AllowSetComponAsLite then
|
||
if ChangedProp or ChangedCompType then
|
||
SetComponAsLite(AComponent);
|
||
|
||
if AChangedProp <> nil then
|
||
AChangedProp^ := ChangedProp;
|
||
if AChangedCompType <> nil then
|
||
AChangedCompType^ := ChangedCompType;
|
||
|
||
if PropValues <> nil then
|
||
begin
|
||
RemoveGUIDIDFromStrings(PropValues, true);
|
||
PropValues.Free;
|
||
end;
|
||
except
|
||
on E: Exception do AddExceptionToLogExt(ClassName, 'LoadPropsToCompon', E.Message);
|
||
end;
|
||
end;
|
||
|
||
procedure TF_MasterUpdatePrice.LoadResourcesFromXF;
|
||
var
|
||
CanUsePosition: Boolean;
|
||
|
||
CurrCypher: String;
|
||
CurrPriceStr: String;
|
||
CurrPrice: Double;
|
||
CurrName: String;
|
||
CurrIzm: String;
|
||
CurrResTypeStr: string;
|
||
CurrResType: Integer;
|
||
|
||
QSelect: TpFIBQuery;
|
||
|
||
NewNode: TFlyNode;
|
||
NewNodeResourceInfo: TNodeObjectInfo;
|
||
Node: TFlyNode;
|
||
|
||
i: Integer;
|
||
// Tolik 28/08/2019 --
|
||
//OldTick, CurrTick: Cardinal;
|
||
OldTick, CurrTick: DWord;
|
||
//
|
||
|
||
ActiveTabXFSheetInfo: TTabXFSheetInfo;
|
||
ActiveSheetComponPropsInfo: TSheetComponPropsInfo;
|
||
begin
|
||
ClearNodes;
|
||
ActiveTabXFSheetInfo := FXLSPreview.ActiveTabXFSheetInfo; //FActiveTabXFSheetInfo;
|
||
if ActiveTabXFSheetInfo <> nil then
|
||
begin
|
||
ActiveSheetComponPropsInfo := TSheetComponPropsInfo(ActiveTabXFSheetInfo.RelatedObject);
|
||
|
||
Screen.Cursor := crHourGlass;
|
||
try
|
||
tvComponents.OnStateChanging := nil;
|
||
BeginProgress;
|
||
try
|
||
lvExistsObjects.Items.Clear;
|
||
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||
QSelect := TF_Main(GForm).DM.Query_Select;
|
||
SetSQLToFIBQuery(QSelect, GetSQLByParams(qtSelect, tnNBResources,
|
||
'UPPER('+fnCypher+') = :'+fnCypher, nil, fnID), false);
|
||
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> Excel
|
||
for i := 0 to FXLSPreview.ActiveTabXFSheetInfo.RowCount - 1 do
|
||
begin
|
||
CurrCypher := FXLSPreview.Xf.Workbook.Sheets[ActiveTabXFSheetInfo.SheetIndex].Cells[i, ActiveSheetComponPropsInfo.NormResCypherColumIndex].ValueAsString;
|
||
CurrPriceStr := FXLSPreview.Xf.Workbook.Sheets[ActiveTabXFSheetInfo.SheetIndex].Cells[i, ActiveSheetComponPropsInfo.ResPriceColumIndex].ValueAsString;
|
||
CurrName := FXLSPreview.Xf.Workbook.Sheets[ActiveTabXFSheetInfo.SheetIndex].Cells[i, ActiveSheetComponPropsInfo.NormResNameColumIndex].ValueAsString;
|
||
CurrIzm := FXLSPreview.Xf.Workbook.Sheets[ActiveTabXFSheetInfo.SheetIndex].Cells[i, ActiveSheetComponPropsInfo.NormResIzmColumIndex].ValueAsString;
|
||
CurrResTypeStr := FXLSPreview.Xf.Workbook.Sheets[ActiveTabXFSheetInfo.SheetIndex].Cells[i, ActiveSheetComponPropsInfo.ResTypeColumIndex].ValueAsString;
|
||
|
||
CurrResType := GetResourceTypeByName(CurrResTypeStr);
|
||
CurrResType := GetResourceTypeCorrectByCypher(CurrCypher, CurrResType);
|
||
|
||
CurrPrice := 0;
|
||
CurrPriceStr := CorrectStrToFloat(CurrPriceStr);
|
||
|
||
CanUsePosition := true;
|
||
try
|
||
CurrPrice := StrToFloatU(CurrPriceStr);
|
||
except
|
||
end;
|
||
if CurrCypher <> '' then
|
||
begin
|
||
QSelect.Close;
|
||
QSelect.Params[0].AsString := AnsiUpperCase(CurrCypher);
|
||
QSelect.ExecQuery;
|
||
if QSelect.Eof then
|
||
begin
|
||
NewNode := tvComponents.Items.Add(nil, '');
|
||
NewNode.StateIndex := STATE_CHECKED;
|
||
|
||
NewNodeResourceInfo := TNodeObjectInfo.Create(NewNode);
|
||
|
||
NewNodeResourceInfo.ID := 0;
|
||
NewNodeResourceInfo.Cypher := CurrCypher;
|
||
NewNodeResourceInfo.Name := CurrName;
|
||
NewNodeResourceInfo.Izm := CurrIzm;
|
||
NewNodeResourceInfo.CurrPrice := 0;
|
||
NewNodeResourceInfo.NewPriceInXFCurrency := CurrPrice;
|
||
NewNodeResourceInfo.ResType := CurrResType;
|
||
|
||
NewNode.Text := NewNodeResourceInfo.Cypher;
|
||
NewNode.Data := NewNodeResourceInfo;
|
||
|
||
NewNode.Cells[ciCypher] := NewNodeResourceInfo.Cypher;
|
||
NewNode.Cells[ciName] := NewNodeResourceInfo.Name;
|
||
NewNode.Cells[ciIzm] := NewNodeResourceInfo.Izm;
|
||
|
||
//CurrencyValue := GetPriceInXLSUOM(NewNodeComponInfo.CurrPrice, NewNodeComponInfo);
|
||
//NewNode.Cells[ciCurrPrice] := FloatToStr(RoundCP(NewNodeComponInfo.CurrPrice)) +' '+ NewNodeComponInfo.CurrencyM.NameBrief;
|
||
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
NewNodeResourceInfo.CurrencyM := TF_Main(GForm).GCurrencyM;
|
||
|
||
// <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
NewNode.Cells[ciResType] := GetResourceTypeName(NewNodeResourceInfo.ResType);
|
||
if NewNode.Cells[ciResType] = '' then
|
||
begin
|
||
NewNode.Cells[ciResType] := cNoDefined;
|
||
NewNode.StateIndex := STATE_UNCHECKED;
|
||
end;
|
||
end
|
||
else
|
||
AddNormResInfoToListView(CurrCypher, CurrName, CurrIzm, QSelect.Fields[0].AsInteger, lvExistsObjects);
|
||
end;
|
||
StepProgress;
|
||
end;
|
||
finally
|
||
EndProgress;
|
||
end;
|
||
tvComponents.OnStateChanging := tvComponentsStateChanging;
|
||
finally
|
||
Screen.Cursor := crDefault;
|
||
end;
|
||
FISLoadedResources := true;
|
||
end;
|
||
end;
|
||
|
||
procedure TF_MasterUpdatePrice.LoadResourcePricesFromXF;
|
||
var
|
||
Node: TFlyNode;
|
||
NodeResourceInfo: TNodeObjectInfo;
|
||
i: Integer;
|
||
begin
|
||
for i := 0 to tvComponents.Items.Count - 1 do
|
||
begin
|
||
Node := tvComponents.Items[i];
|
||
NodeResourceInfo := TNodeObjectInfo(Node.Data);
|
||
if NodeResourceInfo <> nil then
|
||
begin
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> Excel
|
||
Node.Cells[ciNewPriceInXFCurrency] := FloatToStr(RoundCP(NodeResourceInfo.NewPriceInXFCurrency)) + ' '+
|
||
FActiveCurrency.NameBrief;
|
||
NodeResourceInfo.NewPriceInComponCurrency := 0;
|
||
|
||
if NodeResourceInfo.CurrencyM.ID = FActiveCurrency.ID then
|
||
begin
|
||
NodeResourceInfo.CurrencyXF := NodeResourceInfo.CurrencyM;
|
||
NodeResourceInfo.NewPriceInComponCurrency := NodeResourceInfo.NewPriceInXFCurrency;
|
||
end
|
||
else
|
||
begin
|
||
NodeResourceInfo.CurrencyXF := FActiveCurrency;
|
||
NodeResourceInfo.NewPriceInComponCurrency := GetPriceAfterChangeCurrency(NodeResourceInfo.NewPriceInXFCurrency,
|
||
NodeResourceInfo.CurrencyXF, NodeResourceInfo.CurrencyM);
|
||
end;
|
||
|
||
Node.Cells[ciNewPriceInComponCurrency] := FloatToStr(RoundCP(NodeResourceInfo.NewPriceInComponCurrency))+ ' '+
|
||
NodeResourceInfo.CurrencyM.NameBrief;
|
||
end;
|
||
end;
|
||
FISLoadedResourcePrices := true;
|
||
end;
|
||
|
||
procedure TF_MasterUpdatePrice.LoadSelectedColumnFromSheetInfo(ADestCombo: TRzComboBox;
|
||
ASelColumnIndex: Integer; ASrcTabXFSheetInfo: TTabXFSheetInfo);
|
||
var
|
||
i: integer;
|
||
SavedOnChange: TNotifyEvent;
|
||
begin
|
||
SavedOnChange := ADestCombo.OnChange;
|
||
ADestCombo.OnChange := nil;
|
||
try
|
||
ADestCombo.Clear;
|
||
//ADestCombo.Items.Add(cNoDefined);
|
||
//if ASrcTabXFSheetInfo.ColumnCount > 0 then
|
||
// for i := 0 to ASrcTabXFSheetInfo.ColumnCount - 1 do
|
||
// ADestCombo.Items.Add(DecToABC(i+1)); //ADestCombo.Items.Add(IntToStr(i+1));
|
||
LoadColumnsToStrings(ADestCombo.Items, ASrcTabXFSheetInfo.ColumnCount);
|
||
|
||
if (ASelColumnIndex <> -1) and (ASelColumnIndex <= (ASrcTabXFSheetInfo.ColumnCount - 1)) then
|
||
ADestCombo.ItemIndex := ASelColumnIndex + 1
|
||
else
|
||
ADestCombo.ItemIndex := 0;
|
||
finally
|
||
ADestCombo.OnChange := SavedOnChange;
|
||
end;
|
||
end;
|
||
|
||
procedure TF_MasterUpdatePrice.LoadXlsFileToForm;
|
||
var
|
||
NewTabSheet: TRzTabSheet;
|
||
NewTabXFSheetInfo: TTabXFSheetInfo;
|
||
i: Integer;
|
||
begin
|
||
{ClearXlsDataFromForm;
|
||
//Fxf.Workbook.Sheets[i].Columns[0].
|
||
for i := 0 to Fxf.Workbook.Sheets.Count - 1 do
|
||
begin
|
||
NewTabSheet := TRzTabSheet.Create(nil);
|
||
NewTabSheet.PageControl := pcXFSheets;
|
||
NewTabSheet.Caption := Fxf.Workbook.Sheets[i].Name;
|
||
|
||
NewTabXFSheetInfo := TTabXFSheetInfo.Create(NewTabSheet);
|
||
NewTabXFSheetInfo.SheetIndex := i;
|
||
NewTabXFSheetInfo.FGrid.PopupMenu := pmnuXFList;
|
||
NewTabXFSheetInfo.FGrid.OnContextPopup := XFSheetContextPopup;
|
||
NewTabSheet.Tag := Integer(NewTabXFSheetInfo);
|
||
end;
|
||
if pcXFSheets.PageCount > 0 then
|
||
pcXFSheets.ActivePage := pcXFSheets.Pages[0];
|
||
|
||
FIsLoadedXlsFile := true;}
|
||
|
||
FXLSPreview.ShowXLS;
|
||
FIsLoadedXlsFile := true;
|
||
end;
|
||
|
||
procedure TF_MasterUpdatePrice.SelectCurrComponentInNB;
|
||
var
|
||
NodeComponInfo: TNodeObjectInfo;
|
||
Node: TFlyNode;
|
||
begin
|
||
if cbSelectCurrComponInNB.Checked then
|
||
begin
|
||
Node := tvComponents.Selected;
|
||
if Node <> nil then
|
||
if Node.Data <> nil then
|
||
if TObject(Node.Data) is TNodeObjectInfo then
|
||
begin
|
||
if TNodeObjectInfo(Node.Data).ID <> 0 then
|
||
TF_Main(GForm).SelectComponByIDInTree(TNodeObjectInfo(Node.Data).ID);
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
procedure TF_MasterUpdatePrice.SetActiveCurrencyByGUID(AGUID: string);
|
||
var
|
||
SprCurrency: TNBCurrency;
|
||
begin
|
||
if AGUID <> '' then
|
||
begin
|
||
SprCurrency := TF_Main(GForm).GSCSBase.NBSpravochnik.GetCurrencyByGUID(AGUID);
|
||
if SprCurrency <> nil then
|
||
FActiveCurrency := SprCurrency.Data;
|
||
end;
|
||
end;
|
||
|
||
procedure TF_MasterUpdatePrice.SetCaptionToStepPages;
|
||
var
|
||
i: Integer;
|
||
StepPageInfo: TStepSheetInfo;
|
||
begin
|
||
for i := 0 to FStepSheets.Count - 1 do
|
||
begin
|
||
StepPageInfo := TStepSheetInfo(TRzTabSheet(FStepSheets[i]).Tag);
|
||
|
||
if StepPageInfo <> nil then
|
||
begin
|
||
StepPageInfo.FPanelCaption.Alignment := taLeftJustify;
|
||
StepPageInfo.FPanelCaption.Caption := ' '+IntToStr(i+1) +'.'+ StepPageInfo.FCaptionValue;
|
||
//StepPageInfo.FPanelCaption.Color := clBlue;
|
||
//StepPageInfo.FPanelCaption.Font.Color := clWhite;
|
||
//StepPageInfo.FPanelCaption.Font.Size := 10;
|
||
StepPageInfo.FPanelCaption.Font.Style := StepPageInfo.FPanelCaption.Font.Style + [fsBold];
|
||
StepPageInfo.FPanelCaption.Height := 29;
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
procedure TF_MasterUpdatePrice.SetControls;
|
||
var
|
||
CurrStepIndex: Integer;
|
||
begin
|
||
CurrStepIndex := GetCurrStepIndex;
|
||
|
||
btBack.Enabled := CurrStepIndex > 0;
|
||
|
||
if CurrStepIndex = (FStepSheets.Count - 1) then
|
||
btNext.Caption := cMasterCableCanalTracing_Msg15
|
||
else
|
||
btNext.Caption := cMasterCableCanalTracing_Msg14;
|
||
|
||
if pcUpdatePrice.ActivePage = tsSelectColums then
|
||
if FPanelWithSheetParams <> nil then
|
||
gbSheetProps.Height := FPanelWithSheetParams.Height + 15;
|
||
end;
|
||
|
||
procedure TF_MasterUpdatePrice.SetSateToAllComponNodes(AState: Integer);
|
||
var
|
||
i: integer;
|
||
CanSetState: Boolean;
|
||
Node: TFlyNode;
|
||
begin
|
||
tvComponents.OnStateChanging := nil;
|
||
try
|
||
for i := 0 to tvComponents.Items.Count - 1 do
|
||
begin
|
||
Node := tvComponents.Items[i];
|
||
|
||
CanSetState := true;
|
||
if FFormMode = fmImportResources then
|
||
if GetResourceTypeByName(Node.Cells[ciResType]) = -1 then
|
||
CanSetState := false;
|
||
|
||
if CanSetState then
|
||
Node.StateIndex := AState;
|
||
end;
|
||
finally
|
||
tvComponents.OnStateChanging := tvComponentsStateChanging;
|
||
end;
|
||
end;
|
||
|
||
|
||
procedure TF_MasterUpdatePrice.UpdatePrices;
|
||
var
|
||
Node: TFlyNode;
|
||
NodeComponInfo: TNodeObjectInfo;
|
||
SrcComponInfo: TObjectList;
|
||
i, j: Integer;
|
||
QOperat: TpFIBQuery;
|
||
LookedComponsID: TIntList;
|
||
ExistComponCount: Integer;
|
||
LackComponCount: Integer;
|
||
NBRootCatalog: TSCSCatalog;
|
||
NBCatalog: TSCSCatalog;
|
||
ProgressStepCount: Integer;
|
||
UpdateFields: TStringList;
|
||
UpdValue: String;
|
||
|
||
ActiveSheetComponPropsInfo: TSheetComponPropsInfo;
|
||
//PropColumnsMTBoolmark: String;
|
||
PropColumnsMTBoolmark: TBookMark;
|
||
begin
|
||
FReloadNBTree := false;
|
||
FAllSuppliesKinds := nil;
|
||
|
||
SrcComponInfo := TObjectList.Create(false);
|
||
ActiveSheetComponPropsInfo := TSheetComponPropsInfo(FXLSPreview.ActiveTabXFSheetInfo.RelatedObject);
|
||
|
||
LackComponCount := 0;
|
||
ExistComponCount := 0;
|
||
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
for i := 0 to tvComponents.Items.Count - 1 do
|
||
begin
|
||
Node := tvComponents.Items[i];
|
||
if Node.StateIndex = STATE_CHECKED then
|
||
if Node.Data <> nil then
|
||
if TObject(Node.Data) is TNodeObjectInfo then
|
||
begin
|
||
NodeComponInfo := TNodeObjectInfo(Node.Data);
|
||
if ((NodeComponInfo.NewPriceInComponCurrency <> 0) and (cbColumnPrice.ItemIndex <> 0)) or (cbColumnPrice.ItemIndex = 0) then
|
||
begin
|
||
SrcComponInfo.Add(NodeComponInfo);
|
||
if NodeComponInfo.ID = 0 then
|
||
Inc(LackComponCount)
|
||
else
|
||
Inc(ExistComponCount);
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
ProgressStepCount := 0;
|
||
if (cbColumnPrice.ItemIndex > 0) and cbApplyParamsFroExist.Checked then
|
||
ProgressStepCount := SrcComponInfo.Count * 2;
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><>. <20><><EFBFBD>
|
||
//if (cbColumnName.ItemIndex > 0) {cbUpdateNames.Checked} or (cbColumnIzm.ItemIndex > 0) then
|
||
// ProgressStepCount := ProgressStepCount + SrcComponInfo.Count;
|
||
|
||
//if cbAddLackCompons.Checked then
|
||
ProgressStepCount := ProgressStepCount + SrcComponInfo.Count; // <20><><EFBFBD> if cbAddLackCompons.Checked then
|
||
BeginProgress('', ProgressStepCount);
|
||
|
||
ActiveSheetComponPropsInfo.DefineColumnsNums;
|
||
//PropColumnsMTBoolmark := ActiveSheetComponPropsInfo.FMT.Bookmark;
|
||
PropColumnsMTBoolmark := ActiveSheetComponPropsInfo.FMT.GetBookmark;
|
||
ActiveSheetComponPropsInfo.FMT.DisableControls;
|
||
try
|
||
QOperat := TF_Main(GForm).DM.Query_Operat;
|
||
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||
if (cbColumnPrice.ItemIndex > 0) and cbApplyParamsFroExist.Checked then
|
||
begin
|
||
SetSQLToFIBQuery(QOperat, GetSQLByParams(qtUpdate, tnComponent, fnID+' = :'+fnID, nil, fnPrice), false);
|
||
for i := 0 to SrcComponInfo.Count - 1 do
|
||
begin
|
||
NodeComponInfo := TNodeObjectInfo(SrcComponInfo[i]);
|
||
if NodeComponInfo.ID <> 0 then
|
||
begin
|
||
QOperat.Close;
|
||
QOperat.ParamByName(fnID).AsInteger := NodeComponInfo.ID;
|
||
QOperat.ParamByName(fnPrice).AsFloat := GetPriceInNBUOM(NodeComponInfo.NewPriceInComponCurrency, NodeComponInfo);
|
||
QOperat.ExecQuery;
|
||
Inc(ExistComponCount);
|
||
end
|
||
else
|
||
Inc(LackComponCount);
|
||
StepProgress;
|
||
end;
|
||
QOperat.Close;
|
||
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
LookedComponsID := TIntList.Create;
|
||
for i := 0 to SrcComponInfo.Count - 1 do
|
||
begin
|
||
NodeComponInfo := TNodeObjectInfo(SrcComponInfo[i]);
|
||
if NodeComponInfo.ID <> 0 then
|
||
begin
|
||
TF_Main(GForm).CalcPriceForParents(NodeComponInfo.ID, LookedComponsID);
|
||
end;
|
||
StepProgress;
|
||
end;
|
||
FreeAndNil(LookedComponsID);
|
||
end;
|
||
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><>. <20><><EFBFBD>
|
||
//if (cbColumnName.ItemIndex > 0){cbUpdateNames.Checked} or (cbColumnIzm.ItemIndex > 0) then
|
||
//begin
|
||
// UpdateFields := TStringList.Create;
|
||
// if cbColumnName.ItemIndex > 0 then //if cbUpdateNames.Checked then
|
||
// UpdateFields.Add(fnName);
|
||
// if cbColumnIzm.ItemIndex > 0 then
|
||
// UpdateFields.Add(fnIzm);
|
||
//
|
||
// SetSQLToFIBQuery(QOperat, GetSQLByParams(qtUpdate, tnComponent, fnID+' = :'+fnID, UpdateFields, ''), false);
|
||
// for i := 0 to SrcComponInfo.Count - 1 do
|
||
// begin
|
||
// NodeComponInfo := TNodeObjectInfo(SrcComponInfo[i]);
|
||
// if (NodeComponInfo.ID <> 0) and (NodeComponInfo.NewName <> '') then
|
||
// begin
|
||
// QOperat.Close;
|
||
// QOperat.ParamByName(fnID).AsInteger := NodeComponInfo.ID;
|
||
// //QOperat.ParamByName(fnName).AsString := NodeComponInfo.NewName;
|
||
//
|
||
// for j := 0 to UpdateFields.Count - 1 do
|
||
// begin
|
||
// UpdValue := '';
|
||
// if UpdateFields[j] = fnName then
|
||
// UpdValue := NodeComponInfo.NewName
|
||
// else if UpdateFields[j] = fnIzm then
|
||
// UpdValue := NodeComponInfo.Izm;
|
||
// QOperat.ParamByName(UpdateFields[j]).AsString := UpdValue;
|
||
// end;
|
||
//
|
||
// QOperat.ExecQuery;
|
||
// end;
|
||
// StepProgress;
|
||
// end;
|
||
// QOperat.Close;
|
||
//
|
||
// UpdateFields.Free;
|
||
//end;
|
||
|
||
|
||
//if cbAddLackCompons.Checked then
|
||
// begin
|
||
// if LackComponCount > 0 then
|
||
// begin
|
||
// // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
// NBRootCatalog := TF_Main(GForm).CreateNBCatalog(nil, cMasterUpdatePrice_Msg10+' '+DateTimeToStr(Now));
|
||
// if NBRootCatalog <> nil then
|
||
// begin
|
||
// TF_Main(GForm).DM.SetObjectCurrencyAsMain(NBRootCatalog.ID, FActiveCurrency.ID);
|
||
//
|
||
// for i := 0 to SrcComponInfo.Count - 1 do
|
||
// begin
|
||
// NodeComponInfo := TNodeObjectInfo(SrcComponInfo[i]);
|
||
// if (NodeComponInfo.ID = 0) then
|
||
// begin
|
||
// NBCatalog := DefineChildCatalogFromPath(NBRootCatalog, NodeComponInfo.FCatalogs);
|
||
// AddComponToNB(NBCatalog, NodeComponInfo);
|
||
// end;
|
||
// StepProgress;
|
||
// end;
|
||
// FreeandNil(NBRootCatalog);
|
||
// end;
|
||
// end
|
||
// else
|
||
// begin
|
||
// for i := 0 to SrcComponInfo.Count - 1 do
|
||
// begin
|
||
// StepProgress;
|
||
// end;
|
||
// end;
|
||
// end;
|
||
|
||
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
NBRootCatalog := nil;
|
||
if ((LackComponCount > 0) and cbAddLackCompons.Checked) or
|
||
((ExistComponCount > 0) and cbApplyParamsFroExist.Checked and cbApplyStructureForExist.Checked)
|
||
then
|
||
begin
|
||
NBRootCatalog := TF_Main(GForm).CreateNBCatalog(nil, cMasterUpdatePrice_Msg10+' '+DateTimeToStr(Now));
|
||
TF_Main(GForm).DM.SetObjectCurrencyAsMain(NBRootCatalog.ID, FActiveCurrency.ID);
|
||
end;
|
||
|
||
for i := 0 to SrcComponInfo.Count - 1 do
|
||
begin
|
||
NodeComponInfo := TNodeObjectInfo(SrcComponInfo[i]);
|
||
if ((NodeComponInfo.ID = 0) and cbAddLackCompons.Checked) or
|
||
((NodeComponInfo.ID <> 0) and cbApplyParamsFroExist.Checked)
|
||
then
|
||
begin
|
||
NBCatalog := nil;
|
||
if NBRootCatalog <> nil then
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||
if (NodeComponInfo.ID = 0) or (cbApplyStructureForExist.Checked) then
|
||
NBCatalog := DefineChildCatalogFromPath(NBRootCatalog, NodeComponInfo.FCatalogs);
|
||
AddUpdateComponToNB(NBCatalog, NodeComponInfo);
|
||
end;
|
||
StepProgress;
|
||
end;
|
||
if NBRootCatalog <> nil then
|
||
FreeandNil(NBRootCatalog);
|
||
finally
|
||
EndProgress;
|
||
ActiveSheetComponPropsInfo.FMT.EnableControls;
|
||
//ActiveSheetComponPropsInfo.FMT.Bookmark := PropColumnsMTBoolmark;
|
||
ActiveSheetComponPropsInfo.FMT.GotoBookmark(PropColumnsMTBoolmark);
|
||
ActiveSheetComponPropsInfo.FMT.FreeBookmark(PropColumnsMTBoolmark);
|
||
end;
|
||
|
||
FreeAndNil(SrcComponInfo);
|
||
|
||
if FAllSuppliesKinds <> nil then
|
||
begin
|
||
FreeList(FAllSuppliesKinds);
|
||
FAllSuppliesKinds := nil;
|
||
end;
|
||
|
||
if FReloadNBTree then
|
||
F_NormBase.ReloadNodes(nil);
|
||
end;
|
||
|
||
procedure TF_MasterUpdatePrice.XFSheetContextPopup(Sender: TObject; MousePos: TPoint;
|
||
var Handled: Boolean);
|
||
begin
|
||
FXFSheetPopupPoint := MousePos;
|
||
end;
|
||
|
||
procedure TF_MasterUpdatePrice.FXLSPreviewChangeSheet(Sender: TObject);
|
||
var
|
||
SheetComponPropsInfo: TSheetComponPropsInfo;
|
||
TabXFSheetInfo: TTabXFSheetInfo;
|
||
i: Integer;
|
||
Combo: TRzComboBox;
|
||
begin
|
||
if Sender is TTabXFSheetInfo then
|
||
begin
|
||
TabXFSheetInfo := TTabXFSheetInfo(Sender);
|
||
SheetComponPropsInfo := TSheetComponPropsInfo(TTabXFSheetInfo(Sender).RelatedObject);
|
||
FActiveSheetComponPropsInfo := SheetComponPropsInfo;
|
||
|
||
TcxComboBoxProperties(GT_PropColumnsColumn.Properties).Items.Clear;
|
||
LoadColumnsToStrings(TcxComboBoxProperties(GT_PropColumnsColumn.Properties).Items, TabXFSheetInfo.ColumnCount);
|
||
|
||
case FFormMode of
|
||
fmUpdateCompons:
|
||
begin
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||
LoadSelectedColumnFromSheetInfo(cbColumnArtNo, SheetComponPropsInfo.ArtNoColumIndex, TabXFSheetInfo);
|
||
LoadSelectedColumnFromSheetInfo(cbColumnPrice, SheetComponPropsInfo.PriceColumIndex, TabXFSheetInfo);
|
||
LoadSelectedColumnFromSheetInfo(cbColumnName, SheetComponPropsInfo.NameColumIndex, TabXFSheetInfo);
|
||
LoadSelectedColumnFromSheetInfo(cbColumnIzm, SheetComponPropsInfo.IzmColumIndex, TabXFSheetInfo);
|
||
for i := 0 to cntStructLevels - 1 do
|
||
begin
|
||
Combo := GetStructLevelCombo(i);
|
||
if Combo <> nil then
|
||
LoadSelectedColumnFromSheetInfo(Combo, SheetComponPropsInfo.StructLevelsIndex[i], TabXFSheetInfo);
|
||
end;
|
||
|
||
|
||
if SheetComponPropsInfo.ArtNoType = antNone then
|
||
begin
|
||
rbArtNoProduc.Checked := false;
|
||
rbArtNoDistrib.Checked := false;
|
||
end
|
||
else
|
||
if SheetComponPropsInfo.ArtNoType = antProduc then
|
||
rbArtNoProduc.Checked := true
|
||
else
|
||
if SheetComponPropsInfo.ArtNoType = antDistrib then
|
||
rbArtNoDistrib.Checked := true;
|
||
end;
|
||
fmImportNorms, fmImportResources:
|
||
begin
|
||
LoadSelectedColumnFromSheetInfo(cbNormResCypher, SheetComponPropsInfo.NormResCypherColumIndex, TabXFSheetInfo);
|
||
LoadSelectedColumnFromSheetInfo(cbNormResName, SheetComponPropsInfo.NormResNameColumIndex, TabXFSheetInfo);
|
||
LoadSelectedColumnFromSheetInfo(cbNormResIzm, SheetComponPropsInfo.NormResIzmColumIndex, TabXFSheetInfo);
|
||
LoadSelectedColumnFromSheetInfo(cbResPrice, SheetComponPropsInfo.ResPriceColumIndex, TabXFSheetInfo);
|
||
LoadSelectedColumnFromSheetInfo(cbResType, SheetComponPropsInfo.ResTypeColumIndex, TabXFSheetInfo);
|
||
end;
|
||
end;
|
||
GT_PropColumns.DataController.DataSource := SheetComponPropsInfo.FDataSource;
|
||
|
||
DropSelectionForSheet;
|
||
end;
|
||
end;
|
||
|
||
procedure TF_MasterUpdatePrice.FXLSPreviewCreateSheetInfo(Sender: TObject);
|
||
var
|
||
SheetComponPropsInfo: TSheetComponPropsInfo;
|
||
begin
|
||
if Sender is TTabXFSheetInfo then
|
||
begin
|
||
SheetComponPropsInfo := TSheetComponPropsInfo.Create;
|
||
TTabXFSheetInfo(Sender).RelatedObject := SheetComponPropsInfo;
|
||
end;
|
||
end;
|
||
|
||
procedure TF_MasterUpdatePrice.FXLSPreviewMenuItemClick(Sender: TObject);
|
||
var
|
||
RelatedControl: TWinControl;
|
||
RelatedCombo: TRzComboBox;
|
||
begin
|
||
if Sender is TMenuItem then
|
||
if FXLSPreview.ActiveTabXFSheetInfo <> nil then
|
||
if FXLSPreview.ActiveTabXFSheetInfo.ColumnContextPopup > 0 then
|
||
begin
|
||
RelatedCombo := nil;
|
||
RelatedControl := nil;
|
||
|
||
case TMenuItem(Sender).Tag of
|
||
miComponArtNo:
|
||
begin
|
||
cbColumnArtNo.ItemIndex := FXLSPreview.ActiveTabXFSheetInfo.ColumnContextPopup;
|
||
cbColumnArtNoChange(cbColumnArtNo);
|
||
end;
|
||
miComponPrice:
|
||
begin
|
||
cbColumnPrice.ItemIndex := FXLSPreview.ActiveTabXFSheetInfo.ColumnContextPopup;
|
||
cbColumnPriceChange(cbColumnPrice);
|
||
end;
|
||
miStructLevel:
|
||
begin
|
||
RelatedControl := GetStructLevelCombo(GetStructLevelFromName(TMenuItem(Sender).Name, 'pmiColumnStructLevel'));
|
||
end;
|
||
else
|
||
begin
|
||
//RelatedControl := GetRelatedControlWithMenuItemByTag(TMenuItem(Sender).Tag);
|
||
RelatedControl := FXLSPreview.GetRelatedControlWithMenuItemByTag(TMenuItem(Sender).Tag);
|
||
end;
|
||
end;
|
||
|
||
if RelatedControl <> nil then
|
||
if RelatedControl is TRzComboBox then
|
||
RelatedCombo := TRzComboBox(RelatedControl);
|
||
|
||
if RelatedCombo <> nil then
|
||
begin
|
||
RelatedCombo.ItemIndex := FXLSPreview.ActiveTabXFSheetInfo.ColumnContextPopup;
|
||
if Assigned(RelatedCombo.OnChange) then
|
||
RelatedCombo.OnChange(RelatedCombo);
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
|
||
procedure TF_MasterUpdatePrice.pcUpdatePriceChange(Sender: TObject);
|
||
begin
|
||
SetControls;
|
||
end;
|
||
|
||
procedure TF_MasterUpdatePrice.btBackClick(Sender: TObject);
|
||
var
|
||
CurrStepIndex: Integer;
|
||
begin
|
||
CurrStepIndex := GetCurrStepIndex;
|
||
if CurrStepIndex > 0 then
|
||
begin
|
||
//pcUpdatePrice.ActivePage := pcUpdatePrice.Pages[pcUpdatePrice.ActivePageIndex - 1];
|
||
pcUpdatePrice.ActivePage := TRzTabSheet(FStepSheets[CurrStepIndex - 1]);
|
||
SetControls;
|
||
end;
|
||
end;
|
||
|
||
procedure TF_MasterUpdatePrice.btNextClick(Sender: TObject);
|
||
var
|
||
CanNext: Boolean;
|
||
CurrStepIndex: Integer;
|
||
|
||
procedure ShowNoDefinedValue(ACaption: String; AControl: TWinControl);
|
||
begin
|
||
MessageModal(ACaption, ApplicationName, MB_OK or MB_ICONINFORMATION);
|
||
CanNext := false;
|
||
if AControl <> nil then
|
||
AControl.SetFocus;
|
||
end;
|
||
|
||
begin
|
||
try
|
||
CurrStepIndex := GetCurrStepIndex;
|
||
|
||
if CurrStepIndex < (FStepSheets.Count - 1) then
|
||
begin
|
||
CanNext := true;
|
||
|
||
if pcUpdatePrice.ActivePage = tsSelectFileName then
|
||
begin
|
||
if Not FIsOpenedXlsFile then
|
||
ShowNoDefinedValue(cMasterUpdatePrice_Msg2_1, nil)
|
||
else
|
||
if Not FIsLoadedXlsFile then
|
||
LoadXlsFileToForm;
|
||
end
|
||
else
|
||
if pcUpdatePrice.ActivePage = tsSelectColums then
|
||
begin
|
||
if FActiveSheetComponPropsInfo = nil then //if FActiveTabXFSheetInfo = nil then
|
||
ShowNoDefinedValue(cMasterUpdatePrice_Msg2_2, nil)
|
||
else
|
||
case FFormMode of
|
||
fmUpdateCompons:
|
||
begin
|
||
if FActiveSheetComponPropsInfo.ArtNoColumIndex = -1 then //if FActiveTabXFSheetInfo.ArtNoColumIndex = -1 then
|
||
ShowNoDefinedValue(cMasterUpdatePrice_Msg2_3, cbColumnArtNo)
|
||
//else
|
||
//if FActiveSheetComponPropsInfo.PriceColumIndex = -1 then //if FActiveTabXFSheetInfo.PriceColumIndex = -1 then
|
||
// ShowNoDefinedValue(cMasterUpdatePrice_Msg2_4, cbColumnPrice)
|
||
else
|
||
if Not FIsLoadedCurrency then
|
||
LoadCurrencies('');
|
||
end;
|
||
fmImportResources, fmImportNorms:
|
||
begin
|
||
if FActiveSheetComponPropsInfo.NormResCypherColumIndex = -1 then
|
||
ShowNoDefinedValue(cMasterUpdatePrice_Msg2_6, cbNormResCypher)
|
||
else
|
||
if FActiveSheetComponPropsInfo.NormResNameColumIndex = -1 then
|
||
ShowNoDefinedValue(cMasterUpdatePrice_Msg2_7, cbNormResName)
|
||
else
|
||
if FActiveSheetComponPropsInfo.NormResIzmColumIndex = -1 then
|
||
ShowNoDefinedValue(cMasterUpdatePrice_Msg2_8, cbNormResIzm)
|
||
else
|
||
if FFormMode = fmImportResources then
|
||
begin
|
||
if FActiveSheetComponPropsInfo.ResPriceColumIndex = -1 then
|
||
ShowNoDefinedValue(cMasterUpdatePrice_Msg2_9, cbResPrice)
|
||
else
|
||
if FActiveSheetComponPropsInfo.ResTypeColumIndex = -1 then
|
||
ShowNoDefinedValue(cMasterUpdatePrice_Msg2_10, cbResType);
|
||
end;
|
||
|
||
if CanNext then
|
||
begin
|
||
if FFormMode = fmImportResources then
|
||
begin
|
||
if Not FIsLoadedCurrency then
|
||
LoadCurrencies('');
|
||
end
|
||
else
|
||
if FFormMode = fmImportNorms then
|
||
if Not FISLoadedNorms then
|
||
LoadNormsFromXF;
|
||
end;
|
||
end;
|
||
end;
|
||
end
|
||
else
|
||
if pcUpdatePrice.ActivePage = tsSelectCurrency then
|
||
begin
|
||
if FActiveCurrency.GUID = '' then
|
||
ShowNoDefinedValue(cMasterUpdatePrice_Msg2_5, cbCurrency)
|
||
else
|
||
begin
|
||
if FActiveSheetComponPropsInfo <> nil then//if FActiveTabXFSheetInfo <> nil then
|
||
if FActiveSheetComponPropsInfo.ArtNoType = antProduc then //if FActiveTabXFSheetInfo.ArtNoType = antProduc then
|
||
tvComponents.Columns[ciArtNo].Caption := cNameArtNoProduc
|
||
else
|
||
if FActiveSheetComponPropsInfo.ArtNoType = antDistrib then //if FActiveTabXFSheetInfo.ArtNoType = antDistrib then
|
||
tvComponents.Columns[ciArtNo].Caption := cNameArtNoDistrib;
|
||
//tvComponents.Columns[ciNewPriceInXFCurrency].Caption := cMasterUpdatePrice_Msg3_4 +' '+ FActiveCurrency.NameBrief;
|
||
|
||
case FFormMode of
|
||
fmUpdateCompons:
|
||
begin
|
||
if Not FISLoadedComponents then
|
||
LoadComponentsFromXF;
|
||
if Not FISLoadedComponentPrices then
|
||
LoadComponPricesFromXF;
|
||
lbNoticeCurrUOM.Caption := ' '+cMasterUpdatePrice_Msg4 + ' '+GetNameUOM(GetIDFromComboBoxRz(cbUOM), true);
|
||
end;
|
||
fmImportResources:
|
||
begin
|
||
if Not FISLoadedResources then
|
||
LoadResourcesFromXF;
|
||
if Not FISLoadedResourcePrices then
|
||
LoadResourcePricesFromXF;
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
if CanNext then
|
||
begin
|
||
//pcUpdatePrice.ActivePage := pcUpdatePrice.Pages[pcUpdatePrice.ActivePageIndex + 1];
|
||
pcUpdatePrice.ActivePage := TRzTabSheet(FStepSheets[CurrStepIndex + 1]);
|
||
SetControls;
|
||
end;
|
||
end
|
||
else
|
||
if CurrStepIndex = (FStepSheets.Count - 1) then
|
||
begin
|
||
case FFormMode of
|
||
fmUpdateCompons:
|
||
begin
|
||
UpdatePrices;
|
||
TF_Main(GForm).RefreshNode(true);
|
||
end;
|
||
fmImportResources, fmImportNorms:
|
||
begin
|
||
ImportNormResToBase;
|
||
end;
|
||
end;
|
||
|
||
ModalResult := mrOk;
|
||
// Tolik 03/07/2017 -- <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> CashedCompon (<28><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||
if Assigned(F_ProjMan) then
|
||
if TF_Main(F_ProjMan).CashedCompon <> nil then
|
||
TF_Main(F_ProjMan).CashedCompon.Clear;
|
||
if Assigned(F_NormBase) then
|
||
if TF_Main(F_NormBase).CashedCompon <> nil then
|
||
TF_Main(F_NormBase).CashedCompon.Clear;
|
||
//
|
||
end;
|
||
except
|
||
on E: Exception do AddExceptionToLogEx('TF_MasterUpdatePrice.btNextClick', E.Message);
|
||
end;
|
||
end;
|
||
|
||
procedure TF_MasterUpdatePrice.FormCreate(Sender: TObject);
|
||
var
|
||
i: Integer;
|
||
|
||
CaptionPanels: TObjectList;
|
||
CurrPanel: TRzPanel;
|
||
|
||
TreeCollection: TTreeCollectionClass;
|
||
TreeCollectionClassName: String;
|
||
Node: TFlyNode;
|
||
|
||
procedure AddUOMToCombo(AUOM: Integer);
|
||
begin
|
||
AddIDGUIDToComboRz(AUOM, '', GetNameUOM(AUOM, false), cbUOM);
|
||
end;
|
||
|
||
procedure AddNodeToNodes(ANodeList: TFlyNodes; ACaption: String; AData: Integer);
|
||
var
|
||
NewNode: TFlyNode;
|
||
begin
|
||
NewNode := ANodeList.Add(nil, ACaption);
|
||
NewNode.Data := Pointer(AData);
|
||
end;
|
||
|
||
begin
|
||
//Fxf := nil;
|
||
{$IF Defined(OEM_NIKOMAX)}
|
||
cbAddLackCompons.Enabled := False;
|
||
cbApplyStructureForExist.Enabled := False;
|
||
{$IFEND}
|
||
|
||
FXLSPreview := TXLSPreview.Create(gbXLSDoc, true);
|
||
FXLSPreview.OnCreateSheetInfo := FXLSPreviewCreateSheetInfo;
|
||
FXLSPreview.OnChangeSheet := FXLSPreviewChangeSheet;
|
||
FXLSPreview.OnMenuItemClick := FXLSPreviewMenuItemClick;
|
||
|
||
FStepSheets := TObjectList.Create(false);
|
||
|
||
edFileNameXls.ReadOnly := true;
|
||
|
||
for i := 0 to pcUpdatePrice.PageCount - 1 do
|
||
pcUpdatePrice.Pages[i].TabVisible := false;
|
||
|
||
pcXFSheets.ShowFullFrame := false;
|
||
pcXFSheets.TabHeight := 0;
|
||
pcXFSheets.TabOrientation := toBottom;
|
||
pcXFSheets.TabStyle := tsRoundCorners;
|
||
//pcXFSheets.UseColoredTabs := true;
|
||
|
||
{CaptionPanels := TObjectList.Create(false);
|
||
CaptionPanels.Add(pnCaption1);
|
||
CaptionPanels.Add(pnCaption2);
|
||
CaptionPanels.Add(pnCaption3);
|
||
CaptionPanels.Add(pnCaption4);
|
||
for i := 0 to CaptionPanels.Count - 1 do
|
||
begin
|
||
CurrPanel := TRzPanel(CaptionPanels[i]);
|
||
CurrPanel.Alignment := taLeftJustify;
|
||
CurrPanel.Caption := ' '+IntToStr(i+1) +'.'+ CurrPanel.Caption;
|
||
//CurrPanel.Color := clBlue;
|
||
//CurrPanel.Font.Color := clWhite;
|
||
//CurrPanel.Font.Size := 10;
|
||
CurrPanel.Font.Style := CurrPanel.Font.Style + [fsBold];
|
||
CurrPanel.Height := 29;
|
||
end;
|
||
FreeAndNil(CaptionPanels);}
|
||
|
||
CreateStepSheetInfo(tsSelectFileName, pnCaption1);
|
||
CreateStepSheetInfo(tsSelectColums, pnCaption2);
|
||
CreateStepSheetInfo(tsSelectCurrency, pnCaption3);
|
||
CreateStepSheetInfo(tsSelectComponents, pnCaption4);
|
||
|
||
//FControlsRelatedToMenuItems := TObjectList.Create(false);
|
||
//AddRelatedControlWithMenuItem(cbNormResCypher, miNormResCypher);
|
||
// AddRelatedControlWithMenuItem(cbNormResName, miNormResName);
|
||
// AddRelatedControlWithMenuItem(cbNormResIzm, miNormResIzm);
|
||
// AddRelatedControlWithMenuItem(cbResPrice, miResPrice);
|
||
// AddRelatedControlWithMenuItem(cbResType, miResType);
|
||
// AddRelatedControlWithMenuItem(cbColumnName, miName);
|
||
// AddRelatedControlWithMenuItem(cbColumnIzm, miIzm);
|
||
|
||
tvComponents.Columns.Clear;
|
||
tvComponents.Images.Clear;
|
||
//tvComponents.Images.AddImages(TF_Main(GForm).DM.ImageList_FlyTree);
|
||
tvComponents.ButtonCheckedIndex := 1;
|
||
tvComponents.ButtonGrayedIndex := 2;
|
||
tvComponents.ButtonUnCheckedIndex := 0;
|
||
|
||
tvComponents.ClickableColumns := false;
|
||
tvComponents.DefaultRowHeight := 17;
|
||
tvComponents.Indent := 17;
|
||
tvComponents.Options := tvComponents.Options + [goColSizing, goEditing] {- [goHorzLine, goVertLine]};
|
||
tvComponents.RightClickSelect := true;
|
||
//tvComponents.SelectedBackgroundColor := tvclSelBackColorUnFocused;
|
||
//tvComponents.SelectedTextColor := tvclSelTextColorUnFocused;
|
||
tvComponents.ShowRoot := false;
|
||
tvComponents.ShowHint := true;
|
||
tvComponents.ShowImages := true;
|
||
tvComponents.ShowLogic := true;
|
||
tvComponents.ToolTips := true;
|
||
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||
TreeCollection := tvComponents.Columns.Add('', TreeCollectionClassName);
|
||
// <20><><EFBFBD><EFBFBD>
|
||
TreeCollection := tvComponents.Columns.Add(lbNormResCypher.Caption, TreeCollectionClassName);
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
TreeCollection := tvComponents.Columns.Add(cMasterUpdatePrice_Msg3_1, TreeCollectionClassName);
|
||
// <20><>. <20><><EFBFBD>
|
||
TreeCollection := tvComponents.Columns.Add(lbNormResIzm.Caption, TreeCollectionClassName);
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
TreeCollection := tvComponents.Columns.Add(cMasterUpdatePrice_Msg3_2, TreeCollectionClassName);
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Excel <20><><EFBFBD><EFBFBD><EFBFBD>
|
||
TreeCollection := tvComponents.Columns.Add(cMasterUpdatePrice_Msg3_4, TreeCollectionClassName);
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
TreeCollection := tvComponents.Columns.Add(cMasterUpdatePrice_Msg3_3, TreeCollectionClassName);
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
TreeCollection := tvComponents.Columns.Add(cMasterUpdatePrice_Msg3_5, TreeCollectionClassName);
|
||
// <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
TreeCollection := tvComponents.Columns.Add(lbResType.Caption, TreeCollectionClassName);
|
||
|
||
|
||
tvComponents.StructureCol := ciArtNo;
|
||
tvComponents.FixedColAsButton := false;
|
||
|
||
{ciArtNo
|
||
ciName
|
||
ciCurrPrice
|
||
ciNewPriceInComponCurrency
|
||
ciNewPriceInXFCurrency}
|
||
|
||
tvComponents.Columns[ciArtNo].ReadOnly := true;
|
||
tvComponents.Columns[ciArtNo].Width := 130;
|
||
|
||
tvComponents.Columns[ciCypher].ReadOnly := true;
|
||
tvComponents.Columns[ciCypher].Width := 130;
|
||
|
||
tvComponents.Columns[ciName].ReadOnly := true;
|
||
tvComponents.Columns[ciName].Width := 220;
|
||
|
||
tvComponents.Columns[ciIzm].ReadOnly := true;
|
||
tvComponents.Columns[ciIzm].Width := 100;
|
||
|
||
tvComponents.Columns[ciCurrPrice].ReadOnly := true;
|
||
tvComponents.Columns[ciCurrPrice].Width := 100;
|
||
|
||
tvComponents.Columns[ciNewPriceInXFCurrency].ReadOnly := true;
|
||
//tvComponents.Columns[ciNewPriceInXFCurrency].EditorStyle.EditorType := tetCustom;
|
||
tvComponents.Columns[ciNewPriceInXFCurrency].Width := 150;
|
||
|
||
tvComponents.Columns[ciNewPriceInComponCurrency].ReadOnly := true;
|
||
//tvComponents.Columns[ciNewPriceInComponCurrency].EditorStyle.EditorType := tetInteger;
|
||
tvComponents.Columns[ciNewPriceInComponCurrency].Width := 200;
|
||
|
||
tvComponents.Columns[ciNewName].ReadOnly := true;
|
||
tvComponents.Columns[ciNewName].Width := tvComponents.Columns[ciName].Width;
|
||
|
||
//tvComponents.Columns[ciResType].ReadOnly := true;
|
||
tvComponents.Columns[ciResType].Width := 170;
|
||
tvComponents.Columns[ciResType].EditorStyle.EditorType := tetDropDownList;
|
||
tvComponents.Columns[ciResType].EditorStyle.ButtonType := tbtDropDown;
|
||
tvComponents.Columns[ciResType].EditorStyle.AutoComplete := true;
|
||
tvComponents.Columns[ciResType].EditorStyle.DropdownStyles := tvComponents.Columns[ciResType].EditorStyle.DropdownStyles + [ddsSized];
|
||
AddNodeToNodes(tvComponents.Columns[ciResType].EditorStyle.Sections[0].Items, cNoDefined, -1);
|
||
AddNodeToNodes(tvComponents.Columns[ciResType].EditorStyle.Sections[0].Items, cMakeNorm_Msg1_1, rtMat);
|
||
AddNodeToNodes(tvComponents.Columns[ciResType].EditorStyle.Sections[0].Items, cMakeNorm_Msg1_2, rtMachMech);
|
||
AddNodeToNodes(tvComponents.Columns[ciResType].EditorStyle.Sections[0].Items, cMakeNorm_Msg1_3, rtPrice);
|
||
|
||
|
||
//Node := tvComponents.Items.Add(nil, 'test');
|
||
//Node.StateIndex := STATE_CHECKED;
|
||
|
||
|
||
{$IF NOT Defined (FINAL_SCS)}
|
||
gbWorVerisonParams.Visible := true;
|
||
{$ELSE IF}
|
||
gbWorVerisonParams.Visible := false;
|
||
//cbUpdateNames.Checked := false;
|
||
tvComponents.Columns[ciNewName].Visible := false;
|
||
{$IFEND}
|
||
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
AddUOMToCombo(umSantimetr);
|
||
AddUOMToCombo(umMetr);
|
||
AddUOMToCombo(umInch);
|
||
AddUOMToCombo(umFoot);
|
||
|
||
FAllSuppliesKinds := nil;
|
||
end;
|
||
|
||
procedure TF_MasterUpdatePrice.FormDestroy(Sender: TObject);
|
||
begin
|
||
//FreeAndNil(FControlsRelatedToMenuItems);
|
||
FreeAndNil(FStepSheets);
|
||
FreeAndNil(FXLSPreview);
|
||
|
||
ClearStepSheetInfo;
|
||
end;
|
||
|
||
|
||
procedure TF_MasterUpdatePrice.btSelectXlsFileClick(Sender: TObject);
|
||
var
|
||
OpenDialog: TOpenDialog;
|
||
|
||
begin
|
||
OpenDialog := TOpenDialog.Create(Self);
|
||
OpenDialog.Title := cOpeningXlsFile;
|
||
//OpenDialog.InitialDir := ExtractMyDocDir;
|
||
OpenDialog.DefaultExt := '*.'+enXls;
|
||
OpenDialog.FileName := '';
|
||
OpenDialog.Filter := GetDialogFilter(exdXls, enXls);
|
||
OpenDialog.Options := OpenDialog.Options - [ofNoChangeDir] + [ofFileMustExist];
|
||
|
||
if OpenDialog.Execute then
|
||
begin
|
||
Application.ProcessMessages;
|
||
//22.11.2011 if AnsiUpperCaseFileName(OpenDialog.FileName) <> AnsiUpperCaseFileName(FOpenedFileName) then
|
||
begin
|
||
{FIsOpenedXlsFile := true;
|
||
try
|
||
Fxf.OpenFile(OpenDialog.FileName);
|
||
except
|
||
on E: Exception do
|
||
begin
|
||
FIsOpenedXlsFile := false;
|
||
MessageModal(cNoOpenFileB+' '+OpenDialog.FileName, ApplicationName, MB_OK or MB_ICONINFORMATION);
|
||
end;
|
||
end;}
|
||
FIsOpenedXlsFile := false;
|
||
if FXLSPreview.OpenFromFile(OpenDialog.FileName) then
|
||
FIsOpenedXlsFile := true
|
||
else
|
||
MessageModal(cNoOpenFileB+' '+OpenDialog.FileName, ApplicationName, MB_OK or MB_ICONINFORMATION);
|
||
|
||
if FIsOpenedXlsFile then
|
||
begin
|
||
DropSelectionForFile;
|
||
FIsOpenedXlsFile := true;
|
||
FOpenedFileName := OpenDialog.FileName;
|
||
|
||
edFileNameXls.Text := OpenDialog.FileName;
|
||
end;
|
||
end;
|
||
end;
|
||
FreeAndNil(OpenDialog);
|
||
end;
|
||
|
||
procedure TF_MasterUpdatePrice.pcXFSheetsChange(Sender: TObject);
|
||
var
|
||
TabXFSheetInfo: TTabXFSheetInfo;
|
||
TabSheet: TRzTabSheet;
|
||
i, j: integer;
|
||
TestStr: String;
|
||
|
||
SheetCells: TCells;
|
||
RangeRect: TRangeRect;
|
||
begin
|
||
{try
|
||
TabSheet := TRzPageControl(Sender).ActivePage;
|
||
|
||
if TabSheet <> nil then
|
||
begin
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||
TabXFSheetInfo := nil;
|
||
if TabSheet.Tag <> 0 then
|
||
TabXFSheetInfo := TTabXFSheetInfo(TabSheet.Tag);
|
||
if TabXFSheetInfo <> nil then
|
||
begin
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> Excel <20><><EFBFBD><EFBFBD><EFBFBD>
|
||
if TabXFSheetInfo.IsLoadedSheet = false then
|
||
begin
|
||
Screen.Cursor := crHourGlass;
|
||
try
|
||
TabXFSheetInfo.IsLoadedSheet := true;
|
||
if Fxf.Workbook.Sheets[TabSheet.TabIndex].GetUsedRect(RangeRect) then
|
||
begin
|
||
TabXFSheetInfo.ColumnCount := RangeRect.ColumnTo - RangeRect.ColumnFrom + 1;
|
||
TabXFSheetInfo.RowCount := RangeRect.RowTo - RangeRect.RowFrom + 1;
|
||
end
|
||
else
|
||
begin
|
||
//TabXFSheetInfo.ColumnCount := Fxf.Workbook.Sheets[TabSheet.TabIndex].Columns.Count;
|
||
//TabXFSheetInfo.RowCount := Fxf.Workbook.Sheets[TabSheet.TabIndex].Rows.Count;
|
||
//Fxf.Workbook.Sheets[TabSheet.TabIndex].Cells.Count
|
||
TabXFSheetInfo.ColumnCount := Fxf.Workbook.Sheets[TabSheet.TabIndex].Cells.Count;
|
||
TabXFSheetInfo.RowCount := TabXFSheetInfo.ColumnCount;
|
||
end;
|
||
|
||
if (TabXFSheetInfo.ColumnCount <= 1) or (TabXFSheetInfo.ColumnCount > 500) then
|
||
TabXFSheetInfo.ColumnCount := 500;
|
||
if (TabXFSheetInfo.RowCount <= 1) or (TabXFSheetInfo.RowCount > 20000) then
|
||
TabXFSheetInfo.RowCount := 20000;
|
||
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||
TabXFSheetInfo.FGrid.ColCount := TabXFSheetInfo.ColumnCount + 1;
|
||
TabXFSheetInfo.FGrid.RowCount := TabXFSheetInfo.RowCount + 1;
|
||
|
||
if TabXFSheetInfo.FGrid.ColCount > 1 then
|
||
TabXFSheetInfo.FGrid.FixedCols := 1;
|
||
if TabXFSheetInfo.FGrid.RowCount > 1 then
|
||
TabXFSheetInfo.FGrid.FixedRows := 1;
|
||
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
TabXFSheetInfo.FGrid.ColWidths[0] := 25;
|
||
for i := 0 to TabXFSheetInfo.ColumnCount - 1 do
|
||
TabXFSheetInfo.FGrid.ColWidths[i+1] := Fxf.Workbook.Sheets[TabSheet.TabIndex].Columns[i].WidthPx;
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||
TabXFSheetInfo.FGrid.DefaultRowHeight := 19;
|
||
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD>
|
||
for i := 0 to TabXFSheetInfo.ColumnCount - 1 do
|
||
TabXFSheetInfo.FGrid.Cells[i+1, 0] := DecToABC(i+1); //IntToStr(i+1);
|
||
for i := 0 to TabXFSheetInfo.RowCount - 1 do
|
||
TabXFSheetInfo.FGrid.Cells[0, i+1] := IntToStr(i+1);
|
||
|
||
try
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||
SheetCells := Fxf.Workbook.Sheets[TabSheet.TabIndex].Cells;
|
||
for i := 0 to TabXFSheetInfo.ColumnCount - 1 do
|
||
for j := 0 to TabXFSheetInfo.RowCount - 1 do
|
||
begin
|
||
//TestStr := Fxf.Workbook.Sheets[TabSheet.TabIndex].Cells.Cell[j, i].ValueAsString;
|
||
//Fxf.Workbook.Sheets[TabSheet.TabIndex].Cells.Cell[j, i].Value;
|
||
|
||
//TabXFSheetInfo.FGrid.Cells[i+1, j+1] := Fxf.Workbook.Sheets[TabSheet.TabIndex].Cells.Cell[j, i].ValueAsString;
|
||
TabXFSheetInfo.FGrid.Cells[i+1, j+1] := SheetCells.Cell[j, i].ValueAsString;
|
||
end;
|
||
except
|
||
end;
|
||
finally
|
||
Screen.Cursor := crDefault;
|
||
end;
|
||
end;
|
||
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||
FActiveTabXFSheetInfo := nil;
|
||
|
||
LoadSelectedColumnFromSheetInfo(cbColumnArtNo, TabXFSheetInfo.ArtNoColumIndex, TabXFSheetInfo);
|
||
LoadSelectedColumnFromSheetInfo(cbColumnPrice, TabXFSheetInfo.PriceColumIndex, TabXFSheetInfo);
|
||
LoadSelectedColumnFromSheetInfo(cbColumnName, TabXFSheetInfo.NameColumIndex, TabXFSheetInfo);
|
||
if TabXFSheetInfo.ArtNoType = antNone then
|
||
begin
|
||
rbArtNoProduc.Checked := false;
|
||
rbArtNoDistrib.Checked := false;
|
||
end
|
||
else
|
||
if TabXFSheetInfo.ArtNoType = antProduc then
|
||
rbArtNoProduc.Checked := true
|
||
else
|
||
if TabXFSheetInfo.ArtNoType = antDistrib then
|
||
rbArtNoDistrib.Checked := true;
|
||
|
||
FActiveTabXFSheetInfo := TabXFSheetInfo;
|
||
DropSelectionForSheet;
|
||
end;
|
||
end;
|
||
except
|
||
on E: Exception do AddExceptionToLogEx('TF_MasterUpdatePrice.pcXFSheetsChange', E.Message);
|
||
end;}
|
||
end;
|
||
|
||
procedure TF_MasterUpdatePrice.Timer_OnExecuteTimer(Sender: TObject);
|
||
begin
|
||
TTimer(Sender).Enabled := false;
|
||
btSelectXlsFile.Click;
|
||
end;
|
||
|
||
procedure TF_MasterUpdatePrice.cbColumnArtNoChange(Sender: TObject);
|
||
begin
|
||
{if FActiveTabXFSheetInfo <> nil then
|
||
begin
|
||
if TRzComboBox(Sender).ItemIndex > 0 then
|
||
FActiveTabXFSheetInfo.ArtNoColumIndex := TRzComboBox(Sender).ItemIndex - 1
|
||
else
|
||
FActiveTabXFSheetInfo.ArtNoColumIndex := 0;
|
||
|
||
//FISLoadedComponents := false;
|
||
DropSelectionForSheet;
|
||
end; }
|
||
|
||
if FActiveSheetComponPropsInfo <> nil then
|
||
begin
|
||
if TRzComboBox(Sender).ItemIndex > 0 then
|
||
FActiveSheetComponPropsInfo.ArtNoColumIndex := TRzComboBox(Sender).ItemIndex - 1
|
||
else
|
||
FActiveSheetComponPropsInfo.ArtNoColumIndex := 0;
|
||
|
||
//FISLoadedComponents := false;
|
||
DropSelectionForSheet;
|
||
end;
|
||
end;
|
||
|
||
procedure TF_MasterUpdatePrice.cbColumnPriceChange(Sender: TObject);
|
||
begin
|
||
{if FActiveTabXFSheetInfo <> nil then
|
||
begin
|
||
if TRzComboBox(Sender).ItemIndex > 0 then
|
||
FActiveTabXFSheetInfo.PriceColumIndex := TRzComboBox(Sender).ItemIndex - 1
|
||
else
|
||
FActiveTabXFSheetInfo.PriceColumIndex := 0;
|
||
|
||
FIsLoadedCurrency := false;
|
||
DropSelectionForPrices;
|
||
end;}
|
||
if FActiveSheetComponPropsInfo <> nil then
|
||
begin
|
||
if TRzComboBox(Sender).ItemIndex > 0 then
|
||
FActiveSheetComponPropsInfo.PriceColumIndex := TRzComboBox(Sender).ItemIndex - 1
|
||
else
|
||
FActiveSheetComponPropsInfo.PriceColumIndex := 0;
|
||
|
||
FIsLoadedCurrency := false;
|
||
DropSelectionForSheet; //DropSelectionForPrices;
|
||
end;
|
||
end;
|
||
|
||
procedure TF_MasterUpdatePrice.cbColumnNameChange(Sender: TObject);
|
||
begin
|
||
{if FActiveTabXFSheetInfo <> nil then
|
||
begin
|
||
if TRzComboBox(Sender).ItemIndex > 0 then
|
||
FActiveTabXFSheetInfo.NameColumIndex := TRzComboBox(Sender).ItemIndex - 1
|
||
else
|
||
FActiveTabXFSheetInfo.NameColumIndex := 0;
|
||
|
||
//FIsLoadedCurrency := false;
|
||
DropSelectionForSheet;
|
||
end;}
|
||
|
||
if FActiveSheetComponPropsInfo <> nil then
|
||
begin
|
||
if TRzComboBox(Sender).ItemIndex > 0 then
|
||
FActiveSheetComponPropsInfo.NameColumIndex := TRzComboBox(Sender).ItemIndex - 1
|
||
else
|
||
FActiveSheetComponPropsInfo.NameColumIndex := 0;
|
||
|
||
//FIsLoadedCurrency := false;
|
||
DropSelectionForSheet;
|
||
end;
|
||
end;
|
||
|
||
|
||
procedure TF_MasterUpdatePrice.rbArtNoProducClick(Sender: TObject);
|
||
begin
|
||
{if FActiveTabXFSheetInfo <> nil then
|
||
begin
|
||
FActiveTabXFSheetInfo.ArtNoType := antProduc;
|
||
//FISLoadedComponents := false;
|
||
DropSelectionForSheet;
|
||
end;}
|
||
|
||
if FActiveSheetComponPropsInfo <> nil then
|
||
begin
|
||
FActiveSheetComponPropsInfo.ArtNoType := antProduc;
|
||
//FISLoadedComponents := false;
|
||
DropSelectionForSheet;
|
||
end;
|
||
end;
|
||
|
||
procedure TF_MasterUpdatePrice.rbArtNoDistribClick(Sender: TObject);
|
||
begin
|
||
{if FActiveTabXFSheetInfo <> nil then
|
||
begin
|
||
FActiveTabXFSheetInfo.ArtNoType := antDistrib;
|
||
FISLoadedComponents := false;
|
||
end;}
|
||
|
||
if FActiveSheetComponPropsInfo <> nil then
|
||
begin
|
||
FActiveSheetComponPropsInfo.ArtNoType := antDistrib;
|
||
FISLoadedComponents := false;
|
||
end;
|
||
end;
|
||
|
||
procedure TF_MasterUpdatePrice.cbColumnSheetParamChange(Sender: TObject);
|
||
var
|
||
ptrColumnIndex: ^Integer;
|
||
ColumnIndex: Integer;
|
||
StructLevelNum: Integer;
|
||
begin
|
||
if FActiveSheetComponPropsInfo <> nil then
|
||
begin
|
||
ptrColumnIndex := nil;
|
||
//ptrColumnIndex := @FActiveSheetComponPropsInfo.ArtNoColumIndex;
|
||
StructLevelNum := -1;
|
||
|
||
case TRzComboBox(Sender).Tag of
|
||
miNormResCypher:
|
||
ptrColumnIndex := @FActiveSheetComponPropsInfo.NormResCypherColumIndex;
|
||
miNormResName:
|
||
ptrColumnIndex := @FActiveSheetComponPropsInfo.NormResNameColumIndex;
|
||
miNormResIzm:
|
||
ptrColumnIndex := @FActiveSheetComponPropsInfo.NormResIzmColumIndex;
|
||
miResPrice:
|
||
ptrColumnIndex := @FActiveSheetComponPropsInfo.ResPriceColumIndex;
|
||
miResType:
|
||
ptrColumnIndex := @FActiveSheetComponPropsInfo.ResTypeColumIndex;
|
||
miName:
|
||
ptrColumnIndex := @FActiveSheetComponPropsInfo.NameColumIndex;
|
||
miIzm:
|
||
ptrColumnIndex := @FActiveSheetComponPropsInfo.IzmColumIndex;
|
||
miStructLevel:
|
||
StructLevelNum := GetStructLevelFromName(TRzComboBox(Sender).Name, 'cbStructLevel');
|
||
end;
|
||
|
||
if (ptrColumnIndex <> nil) or (StructLevelNum <> -1) then
|
||
begin
|
||
ColumnIndex := 0;
|
||
if TRzComboBox(Sender).ItemIndex > 0 then
|
||
ColumnIndex := TRzComboBox(Sender).ItemIndex - 1;
|
||
|
||
if ptrColumnIndex <> nil then
|
||
begin
|
||
//if TRzComboBox(Sender).ItemIndex > 0 then
|
||
// ptrColumnIndex^ := TRzComboBox(Sender).ItemIndex - 1
|
||
//else
|
||
// ptrColumnIndex^ := 0;
|
||
ptrColumnIndex^ := ColumnIndex;
|
||
end
|
||
else if StructLevelNum <> -1 then
|
||
FActiveSheetComponPropsInfo.StructLevelsIndex[StructLevelNum] := ColumnIndex;
|
||
|
||
//FISLoadedComponents := false;
|
||
DropSelectionForSheet;
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
|
||
procedure TF_MasterUpdatePrice.btSelectCurrencyClick(Sender: TObject);
|
||
var
|
||
CurrencyID: Integer;
|
||
SprCurrency: TNBCurrency;
|
||
begin
|
||
CurrencyID := 0;
|
||
if FActiveCurrency.ID <> 0 then
|
||
CurrencyID := FActiveCurrency.ID;
|
||
|
||
CurrencyID := TF_Main(GForm).DM.GetCurrencyIDFromGuide(CurrencyID, fmEdit);
|
||
if CurrencyID <> 0 then
|
||
if CurrencyID <> FActiveCurrency.ID then
|
||
begin
|
||
SprCurrency := TF_Main(GForm).GSCSBase.NBSpravochnik.GetCurrencyByID(CurrencyID);
|
||
if SprCurrency <> nil then
|
||
begin
|
||
LoadCurrencies(SprCurrency.Data.GUID);
|
||
SetActiveCurrencyByGUID(SprCurrency.Data.GUID);
|
||
//FISLoadedComponentPrices := false;
|
||
DropSelectionForPrices;
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
procedure TF_MasterUpdatePrice.cbCurrencyChange(Sender: TObject);
|
||
var
|
||
GUIDCurrency: String;
|
||
begin
|
||
GUIDCurrency := GetGUIDFromComboBoxRz(TRzComboBox(Sender));
|
||
if GUIDCurrency = '' then
|
||
ZeroMemory(@FActiveCurrency, SizeOf(TCurrency))
|
||
else
|
||
SetActiveCurrencyByGUID(GUIDCurrency);
|
||
//FISLoadedComponentPrices := false;
|
||
DropSelectionForPrices;
|
||
end;
|
||
|
||
procedure TF_MasterUpdatePrice.btUpdatePricesClick(Sender: TObject);
|
||
begin
|
||
LoadComponPricesFromXF;
|
||
end;
|
||
|
||
procedure TF_MasterUpdatePrice.cbSelectCurrComponInNBClick(
|
||
Sender: TObject);
|
||
begin
|
||
SelectCurrComponentInNB;
|
||
end;
|
||
|
||
procedure TF_MasterUpdatePrice.tvComponentsSelectedChanged(OldNode,
|
||
NewNode: TFlyNode);
|
||
begin
|
||
SelectCurrComponentInNB;
|
||
end;
|
||
|
||
procedure TF_MasterUpdatePrice.btCheckAllComponsClick(Sender: TObject);
|
||
begin
|
||
SetSateToAllComponNodes(STATE_CHECKED);
|
||
end;
|
||
|
||
procedure TF_MasterUpdatePrice.btUnCheckAllComponsClick(Sender: TObject);
|
||
begin
|
||
SetSateToAllComponNodes(STATE_UNCHECKED);
|
||
end;
|
||
|
||
procedure TF_MasterUpdatePrice.tvComponentsStateChanging(Node: TFlyNode;
|
||
var AllowChange: Boolean);
|
||
var
|
||
ResType: Integer;
|
||
begin
|
||
if FFormMode = fmImportResources then
|
||
if GetResourceTypeByName(Node.Cells[ciResType]) = -1 then
|
||
begin
|
||
AllowChange := false;
|
||
MessageModal(cMasterUpdatePrice_Msg8, ApplicationName, MB_OK or MB_ICONINFORMATION);
|
||
end;
|
||
end;
|
||
|
||
procedure TF_MasterUpdatePrice.pmiSetColAsArticulClick(Sender: TObject);
|
||
var
|
||
CursorCol: Integer;
|
||
CursorRow: Integer;
|
||
ScrPos: TPoint;
|
||
ClientPos: TPoint;
|
||
begin
|
||
{if FActiveTabXFSheetInfo <> nil then
|
||
begin
|
||
//GetCursorPos(ScrPos);
|
||
//ClientPos := FActiveTabXFSheetInfo.FGrid.ScreenToClient(ScrPos);
|
||
FActiveTabXFSheetInfo.FGrid.MouseToCell(FXFSheetPopupPoint.X, FXFSheetPopupPoint.Y, CursorCol, CursorRow);
|
||
|
||
if CursorCol > 0 then
|
||
begin
|
||
cbColumnArtNo.ItemIndex := CursorCol;
|
||
cbColumnArtNoChange(cbColumnArtNo);
|
||
end;
|
||
end;}
|
||
end;
|
||
|
||
procedure TF_MasterUpdatePrice.pmiSetColAsPriceClick(Sender: TObject);
|
||
var
|
||
CursorCol: Integer;
|
||
CursorRow: Integer;
|
||
begin
|
||
{if FActiveTabXFSheetInfo <> nil then
|
||
begin
|
||
FActiveTabXFSheetInfo.FGrid.MouseToCell(FXFSheetPopupPoint.X, FXFSheetPopupPoint.Y, CursorCol, CursorRow);
|
||
|
||
if CursorCol > 0 then
|
||
begin
|
||
cbColumnPrice.ItemIndex := CursorCol;
|
||
cbColumnPriceChange(cbColumnPrice);
|
||
end;
|
||
end;}
|
||
end;
|
||
|
||
|
||
procedure TF_MasterUpdatePrice.cbUOMChange(Sender: TObject);
|
||
begin
|
||
FXLSUOM := GetIDFromComboBoxRz(cbUOM);
|
||
DropSelectionForPrices;
|
||
end;
|
||
|
||
{ TXLSPreview }
|
||
|
||
function TXLSPreview.AddMenuItem(ACaption: String; ATag: Integer; ARelatedControl: TWinControl=nil): TMenuItem;
|
||
begin
|
||
Result := TMenuItem.Create(FPopupMenu);
|
||
Result.Caption := ACaption;
|
||
if ACaption <> '-' then
|
||
Result.OnClick := FPopupMenuItemClick;
|
||
Result.Tag := ATag;
|
||
|
||
FPopupMenu.Items.Add(Result);
|
||
|
||
if ARelatedControl <> nil then
|
||
AddRelatedControlWithMenuItem(ARelatedControl, ATag);
|
||
end;
|
||
|
||
procedure TXLSPreview.AddRelatedControlWithMenuItem(AControl: TWinControl; ATag: Integer);
|
||
begin
|
||
AControl.Tag := ATag;
|
||
FControlsRelatedToMenuItems.Add(AControl);
|
||
end;
|
||
|
||
|
||
function TXLSPreview.GetRelatedControlWithMenuItemByTag(ATag: Integer): TWinControl;
|
||
var
|
||
RelatedControl: TWinControl;
|
||
i: integer;
|
||
begin
|
||
Result := nil;
|
||
for i := 0 to FControlsRelatedToMenuItems.Count - 1 do
|
||
begin
|
||
RelatedControl := TWinControl(FControlsRelatedToMenuItems[i]);
|
||
if RelatedControl.Tag = ATag then
|
||
begin
|
||
Result := RelatedControl;
|
||
Break; //// BREAK ////
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
procedure TXLSPreview.ClearMenuItems;
|
||
begin
|
||
FPopupMenu.Items.Clear;
|
||
FControlsRelatedToMenuItems.Clear;
|
||
end;
|
||
|
||
procedure TXLSPreview.ClearPages;
|
||
var
|
||
CurrPage: TRzTabSheet;
|
||
TabXFSheetInfo: TTabXFSheetInfo;
|
||
begin
|
||
while FpcXFSheets.PageCount > 0 do
|
||
begin
|
||
CurrPage := FpcXFSheets.Pages[0];
|
||
TabXFSheetInfo := TTabXFSheetInfo(CurrPage.Tag);
|
||
if FOwnsRelatedObjectsToSheetInfo then
|
||
if TabXFSheetInfo.RelatedObject <> nil then
|
||
FreeAndNil(TabXFSheetInfo.RelatedObject);
|
||
FreeAndNil(TabXFSheetInfo);
|
||
|
||
CurrPage.Free;
|
||
end;
|
||
FActiveTabXFSheetInfo := nil;
|
||
end;
|
||
|
||
procedure TXLSPreview.Close;
|
||
begin
|
||
if Fxf <> nil then
|
||
begin
|
||
ClearPages;
|
||
FreeAndNil(Fxf);
|
||
end;
|
||
end;
|
||
|
||
constructor TXLSPreview.Create(AParent: TWinControl; AOwnsRelatedObjectsToSheetInfo: Boolean);
|
||
var
|
||
Owner: TComponent;
|
||
begin
|
||
inherited create;
|
||
FObjectList := TObjectList.Create(true);
|
||
Owner := AParent.Owner;
|
||
|
||
FpcXFSheets := TRzPageControl.Create(Owner);
|
||
FObjectList.Add(FpcXFSheets);
|
||
FpcXFSheets.Parent := AParent;
|
||
FpcXFSheets.Align := alClient;
|
||
FpcXFSheets.ShowFullFrame := false;
|
||
FpcXFSheets.TabHeight := 0;
|
||
FpcXFSheets.TabOrientation := toBottom;
|
||
FpcXFSheets.TabStyle := tsRoundCorners;
|
||
|
||
FpcXFSheets.OnChange := FpcXFSheetsChange;
|
||
|
||
FPopupMenu := TPopupMenu.Create(Owner);
|
||
FObjectList.Add(FPopupMenu);
|
||
|
||
Fxf := nil;
|
||
FFileName := '';
|
||
FActiveTabXFSheetInfo := nil;
|
||
|
||
FControlsRelatedToMenuItems := TObjectList.Create(false);
|
||
|
||
FOwnsRelatedObjectsToSheetInfo := AOwnsRelatedObjectsToSheetInfo;
|
||
end;
|
||
|
||
destructor TXLSPreview.Destroy;
|
||
begin
|
||
FreeAndNil(FControlsRelatedToMenuItems);
|
||
inherited;
|
||
end;
|
||
|
||
procedure TXLSPreview.DefineSheetColumns(ATabXFSheetInfo: TTabXFSheetInfo);
|
||
var
|
||
SheetComponPropsInfo: TSheetComponPropsInfo;
|
||
//PropColumnsMTBoolmark: String;
|
||
PropColumnsMTBoolmark: TBookMark;
|
||
SheetCells: TCells;
|
||
i: integer;
|
||
CellValue: String;
|
||
CellValueLen: Integer;
|
||
ColName: String;
|
||
ColNameLen: Integer;
|
||
PrefLen: Integer;
|
||
LevelNum: Integer;
|
||
begin
|
||
if ATabXFSheetInfo.RowCount > 0 then
|
||
begin
|
||
SheetComponPropsInfo := TSheetComponPropsInfo(ATabXFSheetInfo.RelatedObject);
|
||
|
||
//PropColumnsMTBoolmark := SheetComponPropsInfo.FMT.Bookmark;
|
||
PropColumnsMTBoolmark := SheetComponPropsInfo.FMT.GetBookmark;
|
||
SheetComponPropsInfo.FMT.DisableControls;
|
||
try
|
||
SheetCells := Fxf.Workbook.Sheets[ATabXFSheetInfo.SheetIndex].Cells;
|
||
for i := 0 to ATabXFSheetInfo.ColumnCount - 1 do
|
||
begin
|
||
CellValue := SheetCells.Cell[0, i].ValueAsString;
|
||
CellValueLen := Length(CellValue);
|
||
if (CellValueLen > 2) and (Pos('[',CellValue)=1) and (Pos(']',CellValue)=CellValueLen) then
|
||
begin
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
ColName := Copy(CellValue, 2, CellValueLen - 2);
|
||
ColNameLen := Length(ColName);
|
||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
if SheetComponPropsInfo.FMT.Locate(fnSysName, ColName, []) or
|
||
SheetComponPropsInfo.FMT.Locate(fnSysName, tnCompPropRelation+'.'+ColName, []) then
|
||
begin
|
||
SheetComponPropsInfo.FMT.Edit;
|
||
SheetComponPropsInfo.FMT.FieldByName(fnColumn).AsString := DecToABC(i+1);
|
||
SheetComponPropsInfo.FMT.Post;
|
||
end
|
||
else
|
||
begin
|
||
if ColName = fnArticul then
|
||
SheetComponPropsInfo.ArtNoColumIndex := i
|
||
else
|
||
if ColName = fnName then
|
||
SheetComponPropsInfo.NameColumIndex := i
|
||
else
|
||
if ColName = fnPrice then
|
||
SheetComponPropsInfo.PriceColumIndex := i
|
||
else
|
||
if ColName = fnUOM then
|
||
SheetComponPropsInfo.IzmColumIndex := i
|
||
else
|
||
if Pos('LEVEL_', ColName) = 1 then
|
||
begin
|
||
PrefLen := Length('LEVEL_');
|
||
LevelNum := StrToIntDef(Copy(ColName, PrefLen+1, ColNameLen - PrefLen), -1);
|
||
if (LevelNum > 0) and (LevelNum <= SheetComponPropsInfo.StructLevelsIndex.Count) then
|
||
SheetComponPropsInfo.StructLevelsIndex[LevelNum-1] := i;
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
finally
|
||
//SheetComponPropsInfo.FMT.Bookmark := PropColumnsMTBoolmark;
|
||
SheetComponPropsInfo.FMT.GotoBookmark(PropColumnsMTBoolmark);
|
||
SheetComponPropsInfo.FMT.FreeBookmark(PropColumnsMTBoolmark);
|
||
SheetComponPropsInfo.FMT.EnableControls;
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
procedure TXLSPreview.FpcXFSheetsChange(Sender: TObject);
|
||
var
|
||
TabXFSheetInfo: TTabXFSheetInfo;
|
||
TabSheet: TRzTabSheet;
|
||
i, j: integer;
|
||
TestStr: String;
|
||
|
||
SheetCells: TCells;
|
||
RangeRect: TRangeRect;
|
||
begin
|
||
TabSheet := TRzPageControl(Sender).ActivePage;
|
||
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||
TabXFSheetInfo := nil;
|
||
|
||
if TabSheet <> nil then
|
||
begin
|
||
if TabSheet.Tag <> 0 then
|
||
TabXFSheetInfo := TTabXFSheetInfo(TabSheet.Tag);
|
||
if TabXFSheetInfo <> nil then
|
||
begin
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> Excel <20><><EFBFBD><EFBFBD><EFBFBD>
|
||
if TabXFSheetInfo.IsLoadedSheet = false then
|
||
begin
|
||
Screen.Cursor := crHourGlass;
|
||
try
|
||
TabXFSheetInfo.IsLoadedSheet := true;
|
||
if Fxf.Workbook.Sheets[TabSheet.TabIndex].GetUsedRect(RangeRect) then
|
||
begin
|
||
TabXFSheetInfo.ColumnCount := RangeRect.ColumnTo - RangeRect.ColumnFrom + 2;
|
||
TabXFSheetInfo.RowCount := RangeRect.RowTo - RangeRect.RowFrom + 2;
|
||
end
|
||
else
|
||
begin
|
||
//TabXFSheetInfo.ColumnCount := Fxf.Workbook.Sheets[TabSheet.TabIndex].Columns.Count;
|
||
//TabXFSheetInfo.RowCount := Fxf.Workbook.Sheets[TabSheet.TabIndex].Rows.Count;
|
||
//Fxf.Workbook.Sheets[TabSheet.TabIndex].Cells.Count
|
||
TabXFSheetInfo.ColumnCount := Fxf.Workbook.Sheets[TabSheet.TabIndex].Cells.Count;
|
||
TabXFSheetInfo.RowCount := TabXFSheetInfo.ColumnCount;
|
||
end;
|
||
|
||
//if (TabXFSheetInfo.ColumnCount <= 1) or (TabXFSheetInfo.ColumnCount > 500) then
|
||
// TabXFSheetInfo.ColumnCount := 500;
|
||
//if (TabXFSheetInfo.RowCount <= 1) or (TabXFSheetInfo.RowCount > 20000) then
|
||
// TabXFSheetInfo.RowCount := 20000;
|
||
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||
TabXFSheetInfo.FGrid.ColCount := TabXFSheetInfo.ColumnCount + 1;
|
||
TabXFSheetInfo.FGrid.RowCount := TabXFSheetInfo.RowCount + 1;
|
||
|
||
if TabXFSheetInfo.FGrid.ColCount > 1 then
|
||
TabXFSheetInfo.FGrid.FixedCols := 1;
|
||
if TabXFSheetInfo.FGrid.RowCount > 1 then
|
||
TabXFSheetInfo.FGrid.FixedRows := 1;
|
||
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
TabXFSheetInfo.FGrid.ColWidths[0] := 25;
|
||
for i := 0 to TabXFSheetInfo.ColumnCount - 1 do
|
||
TabXFSheetInfo.FGrid.ColWidths[i+1] := Fxf.Workbook.Sheets[TabSheet.TabIndex].Columns[i].WidthPx;
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||
TabXFSheetInfo.FGrid.DefaultRowHeight := 19;
|
||
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD>
|
||
for i := 0 to TabXFSheetInfo.ColumnCount - 1 do
|
||
TabXFSheetInfo.FGrid.Cells[i+1, 0] := DecToABC(i+1); //IntToStr(i+1);
|
||
for i := 0 to TabXFSheetInfo.RowCount - 1 do
|
||
TabXFSheetInfo.FGrid.Cells[0, i+1] := IntToStr(i+1);
|
||
|
||
try
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||
SheetCells := Fxf.Workbook.Sheets[TabSheet.TabIndex].Cells;
|
||
for i := 0 to TabXFSheetInfo.ColumnCount - 1 do
|
||
for j := 0 to TabXFSheetInfo.RowCount - 1 do
|
||
begin
|
||
//TestStr := Fxf.Workbook.Sheets[TabSheet.TabIndex].Cells.Cell[j, i].ValueAsString;
|
||
//Fxf.Workbook.Sheets[TabSheet.TabIndex].Cells.Cell[j, i].Value;
|
||
|
||
//TabXFSheetInfo.FGrid.Cells[i+1, j+1] := Fxf.Workbook.Sheets[TabSheet.TabIndex].Cells.Cell[j, i].ValueAsString;
|
||
TabXFSheetInfo.FGrid.Cells[i+1, j+1] := SheetCells.Cell[j, i].ValueAsString;
|
||
end;
|
||
except
|
||
end;
|
||
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
DefineSheetColumns(TabXFSheetInfo);
|
||
finally
|
||
Screen.Cursor := crDefault;
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
FActiveTabXFSheetInfo := TabXFSheetInfo;
|
||
|
||
if Assigned(FOnChangeSheet) then
|
||
FOnChangeSheet(TabXFSheetInfo);
|
||
end;
|
||
|
||
procedure TXLSPreview.FPopupMenuItemClick(Sender: TObject);
|
||
var
|
||
CursorCol: Integer;
|
||
CursorRow: Integer;
|
||
begin
|
||
if FActiveTabXFSheetInfo <> nil then
|
||
begin
|
||
FActiveTabXFSheetInfo.FGrid.MouseToCell(FXFSheetPopupPoint.X, FXFSheetPopupPoint.Y, CursorCol, CursorRow);
|
||
|
||
FActiveTabXFSheetInfo.ColumnContextPopup := CursorCol;
|
||
FActiveTabXFSheetInfo.RowContextPopup := CursorRow;
|
||
|
||
if Assigned(FOnMenuItemClick) then
|
||
FOnMenuItemClick(Sender);
|
||
end;
|
||
end;
|
||
|
||
function TXLSPreview.OpenFromFile(AFileName: string): Boolean;
|
||
begin
|
||
Result := false;
|
||
|
||
Close;
|
||
|
||
Fxf := TXLSFile.Create;
|
||
try
|
||
Fxf.OpenFile(AFileName);
|
||
Result := true;
|
||
FFileName := AFileName;
|
||
except
|
||
on E: Exception do
|
||
begin
|
||
Result := false;
|
||
Close;
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
procedure TXLSPreview.ShowXLS;
|
||
var
|
||
NewTabSheet: TRzTabSheet;
|
||
NewTabXFSheetInfo: TTabXFSheetInfo;
|
||
i: Integer;
|
||
begin
|
||
ClearPages;
|
||
//Fxf.Workbook.Sheets[i].Columns[0].
|
||
for i := 0 to Fxf.Workbook.Sheets.Count - 1 do
|
||
begin
|
||
NewTabSheet := TRzTabSheet.Create(nil);
|
||
NewTabSheet.PageControl := FpcXFSheets;
|
||
NewTabSheet.Caption := Fxf.Workbook.Sheets[i].Name;
|
||
|
||
NewTabXFSheetInfo := TTabXFSheetInfo.Create(NewTabSheet);
|
||
NewTabXFSheetInfo.SheetIndex := i;
|
||
NewTabXFSheetInfo.FGrid.PopupMenu := FPopupMenu;
|
||
NewTabXFSheetInfo.FGrid.OnContextPopup := XFSheetContextPopup;
|
||
NewTabSheet.Tag := Integer(NewTabXFSheetInfo);
|
||
|
||
if Assigned(FOnCreateSheetInfo) then
|
||
FOnCreateSheetInfo(NewTabXFSheetInfo);
|
||
end;
|
||
if FpcXFSheets.PageCount > 0 then
|
||
FpcXFSheets.ActivePage := FpcXFSheets.Pages[0];
|
||
end;
|
||
|
||
procedure TXLSPreview.XFSheetContextPopup(Sender: TObject;
|
||
MousePos: TPoint; var Handled: Boolean);
|
||
begin
|
||
FXFSheetPopupPoint := MousePos;
|
||
end;
|
||
|
||
|
||
function GetComponentType(ComboBox_ComponentType: TcxComboBox): TComponentType;
|
||
var
|
||
SprComponentType: TNBComponentType;
|
||
begin
|
||
Result.ID := 0;
|
||
Result.NAME := '';
|
||
Result.NamePlural := '';
|
||
Result.PortKind := pkNone;
|
||
Result.ActiveState := biFalse;
|
||
Result.IsLine := biFalse;
|
||
Result.IsStandart := biFalse;
|
||
if ComboBox_ComponentType.Text <> '' then
|
||
begin
|
||
Result := F_NormBase.DM.GetComponentType(GetIDFromComboBox(ComboBox_ComponentType));
|
||
end;
|
||
end;
|
||
|
||
{ TSheetComponPropsInfo }
|
||
|
||
constructor TSheetComponPropsInfo.Create;
|
||
var
|
||
i: Integer;
|
||
CompType: TComponentType;
|
||
NBCompType: TNBComponentType;
|
||
NormBaseProperty: TNBProperty;
|
||
begin
|
||
inherited;
|
||
ArtNoColumIndex := -1;
|
||
PriceColumIndex := -1;
|
||
NameColumIndex := -1;
|
||
IzmColumIndex := -1;
|
||
ArtNoType := antProduc;
|
||
|
||
NormResCypherColumIndex := -1;
|
||
NormResNameColumIndex := -1;
|
||
NormResIzmColumIndex := -1;
|
||
ResPriceColumIndex := -1;
|
||
ResTypeColumIndex := -1;
|
||
|
||
StructLevelsIndex := TIntList.Create;
|
||
for i := 0 to cntStructLevels - 1 do
|
||
StructLevelsIndex.Add(-1);
|
||
|
||
FMT := TkbmMemTable.Create(nil);
|
||
FMT.FieldDefs.Add(fnSysName, ftString, 255);
|
||
FMT.FieldDefs.Add(fnCaption, ftString, 255);
|
||
FMT.FieldDefs.Add(fnColumn, ftString, 255);
|
||
FMT.FieldDefs.Add(fnColumnNum, ftInteger);
|
||
|
||
FMT.Active := true;
|
||
AddRowToMT(fnComponentType, cComponentType);
|
||
AddRowToMT(fnSuppliesKindName, cSuppliesKindNameB); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
AddRowToMT(fnSuppliesKindUnitKolvo, cSuppliesKindUnitKolvo); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
AddRowToMT(fnIsPriceForSuppliesKind, cIsPriceForSuppliesKind); //23.11.2011 <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
//AddRowToMT('SUPPLIES_KIND_UNIT_PRICE', ''); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
AddRowToMT(fnSign, cNameShortB);
|
||
//AddRowToMT(fnUOM, cSCSComponent_Msg6_3);
|
||
|
||
{$IF Not Defined (FINAL_SCS) or Defined(BASEADM_SCS)}
|
||
AddRowToMT(fnObjectIcon, '<27><><EFBFBD>');
|
||
AddRowToMT(fnObjectIconDesign, '<27><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>');
|
||
|
||
// <20><><EFBFBD>
|
||
for i := 1 to 20 do
|
||
AddRowToMT('CE_'+IntToStr(i), '<27><><EFBFBD> '+IntToStr(i));
|
||
{$IFEND}
|
||
|
||
AddCompPropToMT(pnCategory);
|
||
AddCompPropToMT(pnColor);
|
||
AddCompPropToMT(pnHeight);
|
||
AddCompPropToMT(pnHeightInUnits);
|
||
AddCompPropToMT(pnLength);
|
||
AddCompPropToMT(pnMaxComplectCount);
|
||
AddCompPropToMT(pnMultimode);
|
||
AddCompPropToMT(pnOutDiametr);
|
||
AddCompPropToMT(pnOutSection); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><>2
|
||
AddCompPropToMT(pnPortCount);
|
||
AddCompPropToMT(pnPortWireCount);
|
||
AddCompPropToMT(pnShield);
|
||
AddCompPropToMT(pnWidth);
|
||
AddCompPropToMT(pnWireCount);
|
||
{$IF Not Defined (FINAL_SCS) or Defined(BASEADM_SCS) }
|
||
AddCompPropToMT(pnSectionSize);
|
||
AddCompPropToMT(pnInSection);
|
||
AddCompPropToMT(pnCableChannelSideSection);
|
||
AddCompPropToMT(pnConduitSideDimensions);
|
||
AddCompPropToMT(pnConduitElmentSideDimensions);
|
||
AddCompPropToMT(pnConduitElmentSide1Dimensions);
|
||
AddCompPropToMT(pnConduitElmentSide2Dimensions);
|
||
AddCompPropToMT(pnConduitElmentSide3Dimensions);
|
||
AddCompPropToMT(pnConduitElmentSide4Dimensions);
|
||
AddCompPropToMT(pnAngle);
|
||
AddCompPropToMT(pnCableCanalElemetType);
|
||
{$IFEND}
|
||
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
for i := 1 to 2 do
|
||
AddRowToMT(fnInterf+'_'+IntToStr(i), cNameInterfaceB+'_'+IntToStr(i));
|
||
|
||
//FMT.FieldDefs.Add(fnDescription, ftString, 2000);
|
||
//FMT.FieldDefs.Add('IMAGE', ftString, 500);
|
||
// Tolik 10/05/2018 --
|
||
(*
|
||
{$IF Defined(SCS_PE)}
|
||
AddRowToMT(fnDescription, 'Description');
|
||
AddRowToMT('IMAGE', 'Image');
|
||
{$ELSE}
|
||
AddRowToMT(fnDescription, '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>');
|
||
AddRowToMT('IMAGE', '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>');
|
||
{$IFEND}
|
||
*)
|
||
AddRowToMT(fnDescription, cDescriptionMess);
|
||
AddRowToMT('IMAGE', cImageMess);
|
||
//
|
||
if F_NormBase.F_MasterUpdatePrice.cbLoadFromCompType.Checked then
|
||
begin
|
||
CompType := GetComponentType(F_NormBase.F_MasterUpdatePrice.ComboCompType);
|
||
if CompType.SysName <> '' then
|
||
begin
|
||
FMT.First;
|
||
NBCompType := F_NormBase.GSCSBase.NBSpravochnik.GetComponentTypeByGUID(CompType.GUID);
|
||
for i := 0 to NBCompType.Properties.Count - 1 do
|
||
begin
|
||
NormBaseProperty := F_NormBase.GSCSBase.NBSpravochnik.GetPropertyByGUID(TNBCompTypeProperty(NBCompType.Properties[i]).PropertyData.GUIDProperty);
|
||
if not FMT.Locate(fnSysName, tnCompPropRelation+ '.'+ NormBaseProperty.PropertyData.SysName, []) then
|
||
AddRowToMT(tnCompPropRelation+ '.'+ NormBaseProperty.PropertyData.SysName, NormBaseProperty.PropertyData.Name);
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
FDataSource := TDataSource.Create(nil);
|
||
FDataSource.DataSet := FMT;
|
||
end;
|
||
|
||
procedure TSheetComponPropsInfo.AddRowToMT(const ASysName, ACaption: String; AColumn: String='');
|
||
begin
|
||
FMT.Append;
|
||
FMT.FieldByName(fnSysName).AsString := AnsiUpperCase(ASysName);
|
||
FMT.FieldByName(fnCaption).AsString := ACaption;
|
||
FMT.FieldByName(fnColumn).AsString := AColumn;
|
||
FMT.Post;
|
||
end;
|
||
|
||
procedure TSheetComponPropsInfo.AddCompPropToMT(const APropSysName: String);
|
||
var
|
||
NBProperty: TNBProperty;
|
||
PropName: String;
|
||
begin
|
||
NBProperty := F_NormBase.GSCSBase.NBSpravochnik.GetPropertyBySysName(APropSysName);
|
||
PropName := '';
|
||
if NBProperty <> nil then
|
||
PropName := NBProperty.PropertyData.Name
|
||
else
|
||
PropName := APropSysName;
|
||
AddRowToMT(tnCompPropRelation+'.'+APropSysName, cNamePropertyB+' '+PropName);
|
||
end;
|
||
|
||
procedure TF_MasterUpdatePrice.lvExistsObjectsSelectItem(Sender: TObject;
|
||
Item: TListItem; Selected: Boolean);
|
||
begin
|
||
if Selected then
|
||
if Item <> nil then
|
||
if FFromForm = TF_Main(GForm).F_CaseForm then
|
||
begin
|
||
TF_Main(GForm).F_CaseForm.LocateItemByID(Integer(Item.Data));
|
||
end;
|
||
end;
|
||
|
||
procedure TF_MasterUpdatePrice.tvComponentsCloseUp(
|
||
Sender: TISPlugInplaceEdit; Section: TISPlugSection;
|
||
DropDown: TISDropDown; var Accept: Boolean);
|
||
var
|
||
SelectedNodeInCombo: TFlyNode;
|
||
NodeObjInfo: TNodeObjectInfo;
|
||
begin
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
SelectedNodeInCombo := GetTreeViewSelectedNodeInComboOnClose(tvComponents, DropDown);
|
||
if SelectedNodeInCombo <> nil then
|
||
begin
|
||
NodeObjInfo := TNodeObjectInfo(tvComponents.Selected.Data);
|
||
if NodeObjInfo <> nil then
|
||
case FFormMode of
|
||
fmImportResources:
|
||
NodeObjInfo.ResType := Integer(SelectedNodeInCombo.Data);
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
procedure TF_MasterUpdatePrice.pmiSetColAsIzmClick(Sender: TObject);
|
||
begin
|
||
//
|
||
end;
|
||
|
||
destructor TSheetComponPropsInfo.Destroy;
|
||
begin
|
||
StructLevelsIndex.Free;
|
||
FMT.Active := false;
|
||
FMT.Free;
|
||
FDataSource.Free;
|
||
|
||
inherited;
|
||
end;
|
||
|
||
procedure TSheetComponPropsInfo.DefineColumnsNums;
|
||
var
|
||
//BookMarkStr: String;
|
||
BookMarkStr: TBookMark;
|
||
CurrCol: String;
|
||
CurrColNum: Integer;
|
||
begin
|
||
//BookMarkStr := FMT.Bookmark;
|
||
BookMarkStr := FMT.GetBookmark;
|
||
FMT.DisableControls;
|
||
try
|
||
FMT.First;
|
||
while Not FMT.Eof do
|
||
begin
|
||
CurrColNum := -1;
|
||
CurrCol := FMT.FieldByName(fnColumn).AsString;
|
||
if CurrCol <> '' then
|
||
begin
|
||
FMT.Edit;
|
||
FMT.FieldByName(fnColumnNum).AsInteger := ABCToDec(CurrCol); //ABCToDec(CurrCol) - 1;
|
||
FMT.Post;
|
||
end;
|
||
FMT.Next;
|
||
end;
|
||
finally
|
||
FMT.EnableControls;
|
||
//FMT.Bookmark := BookMarkStr;
|
||
FMT.GotoBookmark(BookMarkStr);
|
||
FMT.FreeBookmark(BookMarkStr);
|
||
end;
|
||
end;
|
||
|
||
procedure TF_MasterUpdatePrice.GT_PropColumnsColumnPropertiesValidate(
|
||
Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption;
|
||
var Error: Boolean);
|
||
begin
|
||
TcxComboBoxProperties(GT_PropColumnsColumn.Properties).OnValidate := nil;
|
||
try
|
||
FActiveSheetComponPropsInfo.FMT.Edit;
|
||
FActiveSheetComponPropsInfo.FMT.FieldByName(fnColumn).AsString := DisplayValue;
|
||
FActiveSheetComponPropsInfo.FMT.Post;
|
||
finally
|
||
TcxComboBoxProperties(GT_PropColumnsColumn.Properties).OnValidate := GT_PropColumnsColumnPropertiesValidate;
|
||
end;
|
||
end;
|
||
|
||
procedure TF_MasterUpdatePrice.cbLoadFromCompTypeClick(Sender: TObject);
|
||
begin
|
||
ComboCompType.Enabled := cbLoadFromCompType.Checked;
|
||
if ComboCompType.Enabled then
|
||
begin
|
||
FillComboBox(ComboCompType, F_NormBase, True, tnComponentTypes, fnID, fnName, '', 0);
|
||
end;
|
||
end;
|
||
|
||
procedure TF_MasterUpdatePrice.fsComponCountLackDblClick(Sender: TObject);
|
||
begin
|
||
NoFindedArticles.SaveToFile('c:\No_Finded.txt');
|
||
showmessage('Saved to c:\No_Finded.txt');
|
||
end;
|
||
|
||
procedure TF_MasterUpdatePrice.fsComponCountExistsDblClick(
|
||
Sender: TObject);
|
||
begin
|
||
FindedArticles.SaveToFile('c:\Finded.txt');
|
||
showmessage('Saved to c:\Finded.txt');
|
||
end;
|
||
|
||
end.
|