expertcad/SRC/SCSNormBase/U_MasterUpdatePrice.pas
2025-05-12 10:07:51 +03:00

4355 lines
151 KiB
ObjectPascal
Raw Blame History

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.