# MrmDepreciationComponent

**Kind:** Class

**Source:** `Pams/Web/Pams.Web/Client/app/components/dashboard/dashboard-libary/widgets/mrm-depreciation/mrm-depreciation.component.ts` (line 77)

**Part of:** [Pams](subsystem-pams)

`MrmDepreciationComponent` is an Angular dashboard widget that checks authorization, loads and saves dashboard data, and calculates depreciation totals by year and month. It responds to initialization and change events, translates month names for display, and releases resources during destruction.

## Methods

| Method | Signature | Returns |
|---|---|---|
| `GetAuthorizationAccess` | `GetAuthorizationAccess(url: string)` | `void` |
| `ngOnInit` | `ngOnInit()` | `void` |
| `ngOnChanges` | `ngOnChanges()` | `void` |
| `ngOnDestroy` | `ngOnDestroy()` | `void` |
| `getDashboardData` | `getDashboardData()` | `void` |
| `initalizingData` | `initalizingData(value: BranchData[])` | `void` |
| `saveDashboardData` | `saveDashboardData()` | `void` |
| `calculateSumByYear` | `calculateSumByYear()` | `void` |
| `calculateSumByMonth` | `calculateSumByMonth(monthIndex: number)` | `void` |
| `translateMonthName` | `translateMonthName(month: BranchData)` | `string` |
| `getpriceFormatted` | `getpriceFormatted(x: undefined)` | `string` |
| `onResize` | `onResize()` | `void` |
| `setChaching` | `setChaching()` | `void` |
| `getChaching` | `getChaching()` | `void` |
| `switchChartTypeHandler` | `switchChartTypeHandler()` | `void` |
| `switchBasedOnTendencyHandler` | `switchBasedOnTendencyHandler()` | `void` |
| `comparingWithPrevMonth` | `comparingWithPrevMonth(month: BranchData, bIndex: number, propertyName: string)` | `string` |
| `comparingBookingWithPrevSumm` | `comparingBookingWithPrevSumm(month: MonthsSum, index: number, propertyName: string)` | `string` |
| `isCurrentMonth` | `isCurrentMonth(month: MonthData)` | `boolean` |
| `getpriceForecastAmount` | `getpriceForecastAmount(month: MonthData)` | `number` |
| `expectedCurrencyChange` | `expectedCurrencyChange(e: undefined)` | `void` |
| `selectText` | `selectText(e: undefined)` | `void` |
| `editSelectedMonthPrepare` | `editSelectedMonthPrepare(month: MonthData, supplierId: number)` | `void` |
| `openPopup` | `openPopup(n: string, t: string, i: string, btnTxt: string)` | `void` |
| `savePopup` | `savePopup()` | `void` |
| `ClosewithDonotSave` | `ClosewithDonotSave()` | `void` |
| `OnOpenedPopup` | `OnOpenedPopup()` | `void` |
| `closePopup` | `closePopup()` | `void` |

## Properties

| Property | Type |
|---|---|
| `sharedPopup` | `SharedPopupComponent` |
| `_widget` | `Widget` |
| `_widgetType` | `string` |
| `withoutOptionBar` | `boolean` |
| `editMode` | `boolean` |
| `bookingOrSales` | `number` |
| `withNominal` | `boolean` |
| `selectedTeam` | `number` |
| `forecastRuleId` | `number` |
| `allowedtoEdit` | `boolean` |
| `allowedtoEnableEdting` | `boolean` |
| `widgetEditRequest` | `any` |
| `widgetEditEnd` | `any` |
| `forecastRules` | `any[]` |
| `selectedYear` | `number` |
| `numYearsDatasource` | `any[]` |
| `todayWidgetsEnum` | `any` |
| `cachingWidgetData` | `CachingWidgetData` |
| `data` | `BranchData[]` |
| `originalData` | `BranchData[]` |
| `selectedData` | `BranchData[]` |
| `singleMonths` | `MonthData` |
| `branchCurrency` | `any` |
| `basedOnTendency` | `boolean` |
| `subscription` | `Subscription` |
| `SeriseRange` | `any[]` |
| `echartsIntance` | `any` |
| `totalBookingMonths` | `MonthsSum[]` |
| `tempMonthSum` | `MonthsSum` |
| `totalTargets` | `number` |
| `yearBooking` | `number` |
| `totalForecasts` | `number` |
| `tempTotalTarget` | `TotalTargets` |
| `totalDepreciationAmount` | `number` |
| `totalOthers` | `number` |
| `totalTotalSGAndA` | `number` |
| `totalFORX` | `number` |
| `totalTotal` | `number` |
| `totalCumulative` | `number` |
| `totalPercentageUsedBudget` | `number` |
| `popup` | `any` |
| `searchText` | `string` |

## Where it refuses work

- `MrmDepreciationComponent` stops the work with an early return when `month.MonthId == 12`.
- `MrmDepreciationComponent` stops the work with an early return when `month[propertyName] < this.data[bIndex - 1][propertyName]`.
- `MrmDepreciationComponent` stops the work with an early return when `month[propertyName] < this.totalBookingMonths[index - 1][propertyName]`.
- `MrmDepreciationComponent` stops the work with an early return when `this.allowedtoEnableEdting`.
- `MrmDepreciationComponent` stops the work with an early return when `this.allowedtoEdit`.

## Diagram

```mermaid
graph LR
    A[Angular lifecycle] --> B[GetAuthorizationAccess]
    A --> C[ngOnInit]
    A --> D[ngOnChanges]
    C --> E[getDashboardData]
    E --> F[initalizingData]
    F --> G[calculateSumByYear]
    F --> H[calculateSumByMonth]
    H --> I[translateMonthName]
    F --> J[saveDashboardData]
    D --> E
    A --> K[ngOnDestroy]
```

## Usage

```ts
import { TestBed } from '@angular/core/testing';
import { MrmDepreciationComponent } from './mrm-depreciation.component';

describe('MrmDepreciationComponent', () => {
  it('loads and calculates dashboard depreciation data', async () => {
    await TestBed.configureTestingModule({
      declarations: [MrmDepreciationComponent],
    }).compileComponents();

    const fixture = TestBed.createComponent(MrmDepreciationComponent);
    fixture.detectChanges();

    const widget = fixture.componentInstance;

    widget.getDashboardData();
    widget.calculateSumByYear();
    widget.calculateSumByMonth();

    fixture.destroy();
  });
});
```

## AI Coding Instructions

- Let Angular invoke `ngOnInit`, `ngOnChanges`, and `ngOnDestroy`; do not call lifecycle methods from production feature code.
- Run authorization checks through `GetAuthorizationAccess()` before exposing or saving dashboard data.
- Keep data preparation in `initalizingData()` and keep yearly and monthly aggregation logic in their respective calculation methods.
- Preserve the month-label conversion path through `translateMonthName()` when adding chart labels or date-based display values.
- Release subscriptions, timers, or other retained resources from `ngOnDestroy()`.

## Used by

3 references from 3 files. Each is a place in this repository where the symbol is actually used — go read one rather than trusting an example.

### Imported by (3)

- `TranslateHandler` — `Pams/Web/Pams.Web/Client/app/app.module.ts`:1
- `DashboardTabComponent` — `Pams/Web/Pams.Web/Client/app/components/dashboard/dashboard-libary/dashboard-tab/dashboard-tab.component.ts`:1
- `ReportsTabComponent` — `Pams/Web/Pams.Web/Client/app/components/dashboard/reports-library/reports-tab/reports-tab.component.ts`:1
