icons dashboard
This commit is contained in:
parent
a5113dd0e1
commit
b22e8b417d
|
|
@ -14,7 +14,7 @@
|
|||
'assets': {
|
||||
'web.assets_backend': [
|
||||
('include', 'web_grid._assets_pqgrid'),
|
||||
'web/static/src/libs/fontawesome/css/font-awesome.css',
|
||||
'web/static/src/libs/fontawesome/*',
|
||||
# Internal module JS and XML files (ensure correct paths within 'static/src')
|
||||
'dashboard/static/src/components/pqgrid_dashboard/pqgrid_stock_dashboard.js',
|
||||
'dashboard/static/src/components/pqgrid_dashboard/pqgrid_sale_dashboard.js',
|
||||
|
|
|
|||
|
|
@ -60,8 +60,8 @@
|
|||
<div class="col mb-4">
|
||||
<div class="card shadow-sm h-100">
|
||||
<div class="card-body text-center py-4">
|
||||
<div class="text-primary mb-3">
|
||||
<i class="fas fa-receipt fa-2x"></i>
|
||||
<div class="text-primary mb-3" style="font-size: 2rem;">
|
||||
🧾
|
||||
</div>
|
||||
<h6 class="card-title text-muted small mb-2">Total Invoices</h6>
|
||||
<h4 class="text-primary fw-bold mb-0" t-esc="state.sale_rows.length"/>
|
||||
|
|
@ -72,8 +72,8 @@
|
|||
<div class="col mb-4">
|
||||
<div class="card shadow-sm h-100">
|
||||
<div class="card-body text-center py-4">
|
||||
<div class="text-danger mb-3">
|
||||
<i class="fas fa-industry fa-2x"></i>
|
||||
<div class="text-danger mb-3" style="font-size: 2rem;">
|
||||
🏭
|
||||
</div>
|
||||
<h6 class="card-title text-muted small mb-2">Total Production</h6>
|
||||
<h4 class="text-danger fw-bold mb-0" t-esc="this.getTotalProductionValue()"/>
|
||||
|
|
@ -84,8 +84,8 @@
|
|||
<div class="col mb-4">
|
||||
<div class="card shadow-sm h-100">
|
||||
<div class="card-body text-center py-4">
|
||||
<div class="text-warning mb-3">
|
||||
<i class="fas fa-shopping-cart fa-2x"></i>
|
||||
<div class="text-warning mb-3" style="font-size: 2rem;">
|
||||
🛒
|
||||
</div>
|
||||
<h6 class="card-title text-muted small mb-2">Total Sale</h6>
|
||||
<h4 class="text-warning fw-bold mb-0" t-esc="this.getTotalSaleValue()"/>
|
||||
|
|
@ -96,8 +96,8 @@
|
|||
<div class="col mb-4">
|
||||
<div class="card shadow-sm h-100">
|
||||
<div class="card-body text-center py-4">
|
||||
<div class="text-success mb-3">
|
||||
<i class="fas fa-chart-line fa-2x"></i>
|
||||
<div class="text-success mb-3" style="font-size: 2rem;">
|
||||
📈
|
||||
</div>
|
||||
<h6 class="card-title text-muted small mb-2">Total Margin</h6>
|
||||
<h4 class="text-success fw-bold mb-0" t-esc="this.getTotalMarginValue()"/>
|
||||
|
|
@ -108,15 +108,14 @@
|
|||
<div class="col mb-4">
|
||||
<div class="card shadow-sm h-100">
|
||||
<div class="card-body text-center py-4">
|
||||
<div class="text-info mb-3">
|
||||
<i class="fas fa-percentage fa-2x"></i>
|
||||
</div>
|
||||
<div class="text-info mb-3" style="font-size: 2rem;">📊</div>
|
||||
<h6 class="card-title text-muted small mb-2">Margin %</h6>
|
||||
<h4 class="text-info fw-bold mb-0" t-esc="this.getMarginPercentage() + '%'"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card shadow-sm">
|
||||
<div class="card-header bg-success text-white">
|
||||
<h5 class="mb-0">
|
||||
|
|
|
|||
|
|
@ -58,12 +58,13 @@
|
|||
</div>
|
||||
|
||||
<div class="row mb-4">
|
||||
|
||||
<!-- Total Products Card -->
|
||||
<div class="col mb-4">
|
||||
<div class="card shadow-sm h-100">
|
||||
<div class="card-body text-center py-4">
|
||||
<div class="text-primary mb-3">
|
||||
<i class="fas fa-cubes fa-2x"></i>
|
||||
<div class="text-primary mb-3" style="font-size: 2rem;">
|
||||
📦
|
||||
</div>
|
||||
<h6 class="card-title text-muted small mb-2">Total Products</h6>
|
||||
<h4 class="text-primary fw-bold mb-0">
|
||||
|
|
@ -78,8 +79,8 @@
|
|||
<div class="col mb-4">
|
||||
<div class="card shadow-sm h-100">
|
||||
<div class="card-body text-center py-4">
|
||||
<div class="text-success mb-3">
|
||||
<i class="fas fa-dollar-sign fa-2x"></i>
|
||||
<div class="text-success mb-3" style="font-size: 2rem;">
|
||||
💰
|
||||
</div>
|
||||
<h6 class="card-title text-muted small mb-2">Current Stock Value</h6>
|
||||
<h4 class="text-success fw-bold mb-0" t-esc="this.getTotalStockValue()"/>
|
||||
|
|
@ -92,8 +93,8 @@
|
|||
<div class="col mb-4">
|
||||
<div class="card shadow-sm h-100">
|
||||
<div class="card-body text-center py-4">
|
||||
<div class="text-danger mb-3">
|
||||
<i class="fas fa-times-circle fa-2x"></i>
|
||||
<div class="text-danger mb-3" style="font-size: 2rem;">
|
||||
❌
|
||||
</div>
|
||||
<h6 class="card-title text-muted small mb-2">Out of Stock</h6>
|
||||
<h4 class="text-danger fw-bold mb-0" t-esc="this.getOutOfStockCount()"/>
|
||||
|
|
@ -102,12 +103,12 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Low Stock Percentage Card -->
|
||||
<!-- Low Stock Alert Card -->
|
||||
<div class="col mb-4">
|
||||
<div class="card shadow-sm h-100">
|
||||
<div class="card-body text-center py-4">
|
||||
<div class="text-info mb-3">
|
||||
<i class="fas fa-exclamation-triangle fa-2x"></i>
|
||||
<div class="text-info mb-3" style="font-size: 2rem;">
|
||||
⚠️
|
||||
</div>
|
||||
<h6 class="card-title text-muted small mb-2">Low Stock Alert</h6>
|
||||
<h4 class="text-info fw-bold mb-0" t-esc="this.getLowStockCount()"/>
|
||||
|
|
@ -115,6 +116,7 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="card shadow-sm">
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ class AssetDetail(models.Model):
|
|||
quantity = fields.Float('Quantity', default=1.0, copy=False, tracking=True)
|
||||
state = fields.Selection([('draft', 'New'), ('active', 'Active'), ('scrap', 'Scrap')], string='State', default="draft")
|
||||
|
||||
@api.model
|
||||
@api.model_create_multi
|
||||
def create(self, vals):
|
||||
location_id = self.env["asset.location"].search([("is_default", "=", True)], limit=1)
|
||||
vals["asset_code"] = self.env["ir.sequence"].next_by_code("asset.detail", sequence_date=datetime.now().year) or "New"
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ class AssetMove(models.Model):
|
|||
asset_id = fields.Many2one(comodel_name="asset.detail", string="Asset")
|
||||
state = fields.Selection([('draft', 'Draft'),('done', 'Done'),('cancel', 'Cancel')], string='State', default="draft")
|
||||
|
||||
@api.model
|
||||
@api.model_create_multi
|
||||
def create(self, vals):
|
||||
vals["name"] = self.env["ir.sequence"].next_by_code("asset.move", sequence_date=datetime.now().year) or "New"
|
||||
return super(AssetMove, self).create(vals)
|
||||
|
|
|
|||
Loading…
Reference in New Issue