Report Costi - {{ ws_name }}
@if (loading) {

Caricamento in corso...

} @if (!loading && report) {
  • Costo Materiale
    {{ formatCurrency(report.totalMaterialCost) }}
    Costi Vari
    {{ formatCurrency(report.totalUntrackedCost) }}
    Costo Personale (Lordo)
    {{ formatCurrency(report.totalPersonnelGrossCost) }}
    Totale Complessivo
    {{ formatCurrency(report.totalGrossCost) }}
    @if (summaryChartData) {
    Distribuzione Costi
    }
  • @if (report.materialCostsByCategory && report.materialCostsByCategory.length > 0) {
    @for (category of report.materialCostsByCategory; track category) {
    {{ category.categoryName || 'Senza Centro di Costo' }} {{ formatCurrency(category.totalPrice) }}
    @for (item of category.items; track item) { }
    Codice Descrizione Quantità Prezzo Unit. Totale
    {{ item.materialCode || '-' }} {{ item.materialDescription || '-' }} {{ formatNumber(item.quantity) }} {{ formatCurrency(item.unitPrice) }} {{ formatCurrency(item.totalPrice) }}
    }
    Totale Materiale: {{ formatCurrency(report.totalMaterialCost) }}
    } @if (materialChartData && report.materialCostsByCategory && report.materialCostsByCategory.length > 0) {
    } @if (!report.materialCostsByCategory || report.materialCostsByCategory.length === 0) {

    Nessun materiale registrato per questo cantiere

    }
  • @if (report.untrackedInvoiceCosts && report.untrackedInvoiceCosts.length > 0) {
    @for (group of report.untrackedInvoiceCosts; track group) {
    Fat. {{ group.fatNumero }} del {{ group.fatData | date: 'dd/MM/yyyy' }} @if (group.supplierName) { - {{ group.supplierName }} } {{ formatCurrency(group.totalPrice) }} {{ getUntrackedReasonLabel(group.untrackedReason) }}
    @for (item of group.items; track item) { }
    Descrizione Quantità Prezzo Unit. Totale
    {{ item.itemDescription || '-' }} {{ formatNumber(item.itemQuantity) }} {{ formatCurrency(item.itemUnitPrice) }} {{ formatCurrency(item.itemTotalPrice) }}
    }
    Totale Costi Vari: {{ formatCurrency(report.totalUntrackedCost) }}
    @if (untrackedChartData) {
    }
    } @if (!report.untrackedInvoiceCosts || report.untrackedInvoiceCosts.length === 0) {

    Nessun costo vario registrato per questo cantiere

    }
  • @if (report.personnelCosts && report.personnelCosts.length > 0) {
    @for (item of report.personnelCosts; track item) { @if (isEmployeeExpanded(item)) { } }
    Dipendente Periodo Rapporto Ore Ord. Ore Straord. Ore Tot. Paga Oraria Lorda Costo Ord. Costo Straord. Costo Lordo
    {{ item.employeeName }} {{ item.employeeSurname }} {{ item.relationshipStart | date: 'dd/MM/yyyy' }} - {{ item.relationshipEnd ? (item.relationshipEnd | date: 'dd/MM/yyyy') : 'In corso' }} {{ formatNumber(item.hoursOrdinary) }} {{ formatNumber(item.hoursOvertime) }} {{ formatNumber(item.hoursWorked) }} {{ formatCurrency(item.grossHourlyRate) }} {{ formatCurrency(item.grossCostOrdinary) }} {{ formatCurrency(item.grossCostOvertime) }} {{ formatCurrency(item.grossCost) }}
    @if (loadingBreakdown) {
    Caricamento dettaglio...
    } @if (!loadingBreakdown && employeeBreakdown.length === 0) {

    Nessun dato (né timbratura né rapportino) per questo periodo

    } @if (!loadingBreakdown && employeeBreakdown.length > 0) {
    Dettaglio giornaliero di {{ item.employeeName }} {{ item.employeeSurname }}
    @for (b of employeeBreakdown; track b) { }
    Data Stato Timbratura Ore Timbr. Ore Ord. Ore Straord. Attività Note
    {{ b.day | date: 'dd/MM/yyyy' }} @if (b.hasScan && b.hasReport) { T + R } @if (b.hasScan && !b.hasReport) { T } @if (!b.hasScan && b.hasReport) { R } @if (b.hasScan) { {{ b.scanIn | date: 'HH:mm' }} - {{ b.scanOut | date: 'HH:mm' }} } @if (!b.hasScan) { — } @if (b.scanHours != null) { {{ formatNumber(b.scanHours) }} } @if (b.scanHours == null) { — } @if (b.reportOrd != null) { {{ formatNumber(b.reportOrd) }} } @if (b.reportOrd == null) { — } @if (b.reportOver != null) { {{ formatNumber(b.reportOver) }} } @if (b.reportOver == null) { — } @if (b.hasReport) { {{ getAttivitaSummary(b) || '—' }} } @if (!b.hasReport) { — } {{ b.reportNote || '—' }}
    Legenda: T + R Timbratura + Rapportino T Solo timbratura R Solo rapportino caposquadra
    }
    Totale Personale {{ formatCurrency(report.totalPersonnelGrossCost) }}
    } @if (personnelChartData && report.personnelCosts && report.personnelCosts.length > 0) {
    } @if (!report.personnelCosts || report.personnelCosts.length === 0) {

    Nessun rapportino caposquadra completato per questo cantiere

    }
} @if (!loading && !report) {

Nessun dato disponibile per questo cantiere

}