pret fara discount
This commit is contained in:
77
MAPPING_SQL_SHEETS.md
Normal file
77
MAPPING_SQL_SHEETS.md
Normal file
@@ -0,0 +1,77 @@
|
|||||||
|
# Mapare Query SQL -> Sheet Excel -> Sectiune
|
||||||
|
|
||||||
|
Acest fisier mapeaza fiecare query SQL din `queries.py` cu sheet-ul si sectiunea corespunzatoare din raportul Excel.
|
||||||
|
|
||||||
|
## Sheet-uri Consolidate
|
||||||
|
|
||||||
|
### Dashboard Complet
|
||||||
|
Sheet principal care contine 12 sectiuni:
|
||||||
|
|
||||||
|
| Sectiune | Query Sursa | Sheet Sursa (daca e consolidat) |
|
||||||
|
|----------|-------------|--------------------------------|
|
||||||
|
| KPIs cu Comparatie YoY | `SUMAR_EXECUTIV` + `SUMAR_EXECUTIV_YOY` | vedere_ansamblu |
|
||||||
|
| Recomandari Prioritare | (din recommendations.py) | - |
|
||||||
|
| Venituri per Linie Business | `INDICATORI_AGREGATI_VENITURI` + `INDICATORI_AGREGATI_VENITURI_YOY` | indicatori_venituri |
|
||||||
|
| Portofoliu Clienti | `PORTOFOLIU_CLIENTI` | - |
|
||||||
|
| Concentrare Risc YoY | `CONCENTRARE_RISC` + `CONCENTRARE_RISC_YOY` | clienti_risc |
|
||||||
|
| Indicatori Generali | `INDICATORI_GENERALI` | tablou_financiar |
|
||||||
|
| Indicatori Lichiditate | `INDICATORI_LICHIDITATE` | tablou_financiar |
|
||||||
|
| Ciclu Conversie Cash | `CICLU_CONVERSIE_CASH` | - |
|
||||||
|
| Solduri Clienti (Top 10) | `SOLDURI_CLIENTI` | - |
|
||||||
|
| Solduri Furnizori (Top 10) | `SOLDURI_FURNIZORI` | - |
|
||||||
|
| Clasificare Datorii | `CLASIFICARE_DATORII` | tablou_financiar |
|
||||||
|
| Proiectie Lichiditate | `PROIECTIE_LICHIDITATE` | tablou_financiar |
|
||||||
|
|
||||||
|
## Sheet-uri de Detaliu (dupa consolidare)
|
||||||
|
|
||||||
|
| Sheet Excel | Query SQL | Descriere |
|
||||||
|
|-------------|-----------|-----------|
|
||||||
|
| Sezonalitate Lunara | `SEZONALITATE_LUNARA` | Analiza vanzari pe luni |
|
||||||
|
| Vanzari Sub Cost | `VANZARI_SUB_COST` | Alerta: vanzari sub costul de achizitie |
|
||||||
|
| Clienti Marjă Mică | `CLIENTI_MARJA_MICA` | Alerta: clienti cu marja sub prag |
|
||||||
|
| Ciclu Conversie Cash | `CICLU_CONVERSIE_CASH` | DSO, DPO, DIO, CCC |
|
||||||
|
| Marjă Per Client | `MARJA_PER_CLIENT` | Analiza marjei per client |
|
||||||
|
| Clienţi Ranking Profit | `CLIENTI_RANKING_PROFIT` | Top clienti dupa profit |
|
||||||
|
| Frecvenţa Clienţi | `FRECVENTA_CLIENTI` | Frecventa cumparari per client |
|
||||||
|
| Concentrare Clienţi | `CONCENTRARE_CLIENTI` | Concentrare pe primii clienti |
|
||||||
|
| Trending Clienţi | `TRENDING_CLIENTI` | Tendinta clienti (nou/crescator/stabil) |
|
||||||
|
| Marjă Client Categorie | `MARJA_CLIENT_CATEGORIE` | Marja per client per categorie |
|
||||||
|
| Top Produse | `TOP_PRODUSE` | Top produse vandute |
|
||||||
|
| Marjă Per Categorie | `MARJA_PER_CATEGORIE` | Marja per categorie articol |
|
||||||
|
| Marjă Per Gestiune | `MARJA_PER_GESTIUNE` | Marja per gestiune |
|
||||||
|
| Articole Negestionabile | `ARTICOLE_NEGESTIONABILE` | Articole fara miscare |
|
||||||
|
| Productie Vs Revanzare | `PRODUCTIE_VS_REVANZARE` | Producție proprie vs revanzare |
|
||||||
|
| Dispersie Preturi | `DISPERSIE_PRETURI` | Variatie preturi |
|
||||||
|
| Clienţi Sub Medie | `CLIENTI_SUB_MEDIE` | Clienti sub vanzarea medie |
|
||||||
|
| Evolutie Discount | `EVOLUTIE_DISCOUNT` | Evolutie discounturi |
|
||||||
|
| Dso Dpo | `DSO_DPO` | Zile incasare/plata |
|
||||||
|
| Dso Dpo Yoy | `DSO_DPO_YOY` | DSO/DPO cu comparatie YoY |
|
||||||
|
| Solduri Clienti | `SOLDURI_CLIENTI` | Creante 4111 |
|
||||||
|
| Aging Creante | `AGING_CREANTE` | Creante pe intervale varsta |
|
||||||
|
| Facturi Restante | `FACTURI_RESTANTE` | Facturi neincasate |
|
||||||
|
| Solduri Furnizori | `SOLDURI_FURNIZORI` | Datorii 401 |
|
||||||
|
| Aging Datorii | `AGING_DATORII` | Datorii pe intervale varsta |
|
||||||
|
| Facturi Restante Furnizori | `FACTURI_RESTANTE_FURNIZORI` | Facturi neplatite |
|
||||||
|
| Pozitia Cash | `POZITIA_CASH` | Pozitia de trezorerie |
|
||||||
|
| Vanzari Lunare | `VANZARI_LUNARE` | Istoric vanzari lunare |
|
||||||
|
| Stoc Curent | `STOC_CURENT` | Stocuri curente |
|
||||||
|
| Stoc Lent | `STOC_LENT` | Stocuri fara miscare |
|
||||||
|
| Rotatie Stocuri | `ROTATIE_STOCURI` | Indicatori rotatie stocuri |
|
||||||
|
| Analiza Prajitorie | `ANALIZA_PRAJITORIE` | Analiza productie cafea |
|
||||||
|
|
||||||
|
## Sheet-uri Eliminate (acum in Dashboard Complet)
|
||||||
|
|
||||||
|
Urmatoarele sheet-uri au fost consolidate in Dashboard Complet si nu mai apar ca sheet-uri separate:
|
||||||
|
|
||||||
|
| Sheet Veche | Date integrate in |
|
||||||
|
|-------------|-------------------|
|
||||||
|
| Vedere Ansamblu | Dashboard Complet - sectiunea KPIs |
|
||||||
|
| Indicatori Venituri | Dashboard Complet - sectiunea Venituri |
|
||||||
|
| Clienti si Risc | Dashboard Complet - sectiunea Concentrare Risc |
|
||||||
|
| Tablou Financiar | Dashboard Complet - 5 sectiuni financiare |
|
||||||
|
|
||||||
|
## Observatii
|
||||||
|
|
||||||
|
1. Query-urile cu sufix `_YOY` sunt folosite pentru comparatie Year-over-Year
|
||||||
|
2. Consolidarile combina date curente + anterioare pentru analiza tendintelor
|
||||||
|
3. Sheet-ul "Dashboard Complet" este principalul sheet cu toate informatiile consolidate
|
||||||
204
queries.py
204
queries.py
@@ -7,7 +7,7 @@ OPTIMIZED: All queries use base tables (vanzari, vanzari_detalii) with Oracle hi
|
|||||||
IMPORTANT: Price calculation considers pret_cu_tva flag:
|
IMPORTANT: Price calculation considers pret_cu_tva flag:
|
||||||
- If pret_cu_tva = 1: price includes VAT, must divide by (1 + proc_tvav/100)
|
- If pret_cu_tva = 1: price includes VAT, must divide by (1 + proc_tvav/100)
|
||||||
- If pret_cu_tva = 0: price is already without VAT
|
- If pret_cu_tva = 0: price is already without VAT
|
||||||
Formula: CASE WHEN d.pret_cu_tva = 1 THEN d.pret / (1 + d.proc_tvav/100) ELSE d.pret END
|
Formula: ((CASE WHEN d.pret_cu_tva = 1 THEN round((ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) / d.proc_tvav, 4) ELSE (ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) END) - ROUND(NVL(c.curs, 1) * NVL(d.discount_unitar, 4) / NVL(c.multiplicator, 1), 4))
|
||||||
"""
|
"""
|
||||||
|
|
||||||
# =============================================================================
|
# =============================================================================
|
||||||
@@ -19,16 +19,18 @@ SELECT /*+ LEADING(f d) USE_NL(d) INDEX(f IDX_VANZARI_NR) */
|
|||||||
p.denumire AS client,
|
p.denumire AS client,
|
||||||
p.cod_fiscal,
|
p.cod_fiscal,
|
||||||
COUNT(DISTINCT f.id_vanzare) AS nr_facturi,
|
COUNT(DISTINCT f.id_vanzare) AS nr_facturi,
|
||||||
ROUND(SUM(d.cantitate * CASE WHEN d.pret_cu_tva = 1 THEN d.pret / (1 + d.proc_tvav/100) ELSE d.pret END), 2) AS vanzari_fara_tva,
|
ROUND(SUM(d.cantitate * ((CASE WHEN d.pret_cu_tva = 1 THEN round((ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) / d.proc_tvav, 4) ELSE (ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) END) - ROUND(NVL(c.curs, 1) * NVL(d.discount_unitar, 4) / NVL(c.multiplicator, 1), 4))), 2) AS vanzari_fara_tva,
|
||||||
ROUND(SUM(d.cantitate * d.pret_achizitie), 2) AS cost_total,
|
ROUND(SUM(d.cantitate * d.pret_achizitie), 2) AS cost_total,
|
||||||
ROUND(SUM(d.cantitate * (CASE WHEN d.pret_cu_tva = 1 THEN d.pret / (1 + d.proc_tvav/100) ELSE d.pret END - d.pret_achizitie)), 2) AS marja_bruta,
|
ROUND(SUM(d.cantitate * (((CASE WHEN d.pret_cu_tva = 1 THEN round((ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) / d.proc_tvav, 4) ELSE (ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) END) - ROUND(NVL(c.curs, 1) * NVL(d.discount_unitar, 4) / NVL(c.multiplicator, 1), 4)) - d.pret_achizitie)), 2) AS marja_bruta,
|
||||||
ROUND(
|
ROUND(
|
||||||
CASE WHEN SUM(d.cantitate * CASE WHEN d.pret_cu_tva = 1 THEN d.pret / (1 + d.proc_tvav/100) ELSE d.pret END) > 0
|
CASE WHEN SUM(d.cantitate * ((CASE WHEN d.pret_cu_tva = 1 THEN round((ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) / d.proc_tvav, 4) ELSE (ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) END) - ROUND(NVL(c.curs, 1) * NVL(d.discount_unitar, 4) / NVL(c.multiplicator, 1), 4))) > 0
|
||||||
THEN SUM(d.cantitate * (CASE WHEN d.pret_cu_tva = 1 THEN d.pret / (1 + d.proc_tvav/100) ELSE d.pret END - d.pret_achizitie)) * 100.0 / SUM(d.cantitate * CASE WHEN d.pret_cu_tva = 1 THEN d.pret / (1 + d.proc_tvav/100) ELSE d.pret END)
|
THEN SUM(d.cantitate * (((CASE WHEN d.pret_cu_tva = 1 THEN round((ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) / d.proc_tvav, 4) ELSE (ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) END) - ROUND(NVL(c.curs, 1) * NVL(d.discount_unitar, 4) / NVL(c.multiplicator, 1), 4)) - d.pret_achizitie)) * 100.0 / SUM(d.cantitate * ((CASE WHEN d.pret_cu_tva = 1 THEN round((ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) / d.proc_tvav, 4) ELSE (ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) END) - ROUND(NVL(c.curs, 1) * NVL(d.discount_unitar, 4) / NVL(c.multiplicator, 1), 4)))
|
||||||
ELSE 0 END
|
ELSE 0 END
|
||||||
, 2) AS procent_marja
|
, 2) AS procent_marja
|
||||||
FROM vanzari f
|
FROM vanzari f
|
||||||
JOIN vanzari_detalii d ON d.id_vanzare = f.id_vanzare AND d.sters = 0
|
JOIN vanzari_detalii d ON d.id_vanzare = f.id_vanzare AND d.sters = 0
|
||||||
|
LEFT JOIN VANZARI_CURSURI c ON d.id_vanzare = c.id_vanzare
|
||||||
|
AND d.id_valuta = c.id_valuta
|
||||||
LEFT JOIN nom_parteneri p ON f.id_part = p.id_part
|
LEFT JOIN nom_parteneri p ON f.id_part = p.id_part
|
||||||
WHERE f.sters = 0
|
WHERE f.sters = 0
|
||||||
AND f.tip > 0
|
AND f.tip > 0
|
||||||
@@ -47,22 +49,24 @@ SELECT * FROM (
|
|||||||
SELECT /*+ LEADING(f d) USE_NL(d) INDEX(f IDX_VANZARI_NR) */
|
SELECT /*+ LEADING(f d) USE_NL(d) INDEX(f IDX_VANZARI_NR) */
|
||||||
p.denumire AS client,
|
p.denumire AS client,
|
||||||
p.cod_fiscal,
|
p.cod_fiscal,
|
||||||
ROUND(SUM(d.cantitate * CASE WHEN d.pret_cu_tva = 1 THEN d.pret / (1 + d.proc_tvav/100) ELSE d.pret END), 2) AS vanzari_fara_tva,
|
ROUND(SUM(d.cantitate * ((CASE WHEN d.pret_cu_tva = 1 THEN round((ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) / d.proc_tvav, 4) ELSE (ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) END) - ROUND(NVL(c.curs, 1) * NVL(d.discount_unitar, 4) / NVL(c.multiplicator, 1), 4))), 2) AS vanzari_fara_tva,
|
||||||
ROUND(SUM(d.cantitate * (CASE WHEN d.pret_cu_tva = 1 THEN d.pret / (1 + d.proc_tvav/100) ELSE d.pret END - d.pret_achizitie)), 2) AS marja_bruta,
|
ROUND(SUM(d.cantitate * (((CASE WHEN d.pret_cu_tva = 1 THEN round((ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) / d.proc_tvav, 4) ELSE (ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) END) - ROUND(NVL(c.curs, 1) * NVL(d.discount_unitar, 4) / NVL(c.multiplicator, 1), 4)) - d.pret_achizitie)), 2) AS marja_bruta,
|
||||||
ROUND(
|
ROUND(
|
||||||
CASE WHEN SUM(d.cantitate * CASE WHEN d.pret_cu_tva = 1 THEN d.pret / (1 + d.proc_tvav/100) ELSE d.pret END) > 0
|
CASE WHEN SUM(d.cantitate * ((CASE WHEN d.pret_cu_tva = 1 THEN round((ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) / d.proc_tvav, 4) ELSE (ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) END) - ROUND(NVL(c.curs, 1) * NVL(d.discount_unitar, 4) / NVL(c.multiplicator, 1), 4))) > 0
|
||||||
THEN SUM(d.cantitate * (CASE WHEN d.pret_cu_tva = 1 THEN d.pret / (1 + d.proc_tvav/100) ELSE d.pret END - d.pret_achizitie)) * 100.0 / SUM(d.cantitate * CASE WHEN d.pret_cu_tva = 1 THEN d.pret / (1 + d.proc_tvav/100) ELSE d.pret END)
|
THEN SUM(d.cantitate * (((CASE WHEN d.pret_cu_tva = 1 THEN round((ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) / d.proc_tvav, 4) ELSE (ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) END) - ROUND(NVL(c.curs, 1) * NVL(d.discount_unitar, 4) / NVL(c.multiplicator, 1), 4)) - d.pret_achizitie)) * 100.0 / SUM(d.cantitate * ((CASE WHEN d.pret_cu_tva = 1 THEN round((ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) / d.proc_tvav, 4) ELSE (ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) END) - ROUND(NVL(c.curs, 1) * NVL(d.discount_unitar, 4) / NVL(c.multiplicator, 1), 4)))
|
||||||
ELSE 0 END
|
ELSE 0 END
|
||||||
, 2) AS procent_marja
|
, 2) AS procent_marja
|
||||||
FROM vanzari f
|
FROM vanzari f
|
||||||
JOIN vanzari_detalii d ON d.id_vanzare = f.id_vanzare AND d.sters = 0
|
JOIN vanzari_detalii d ON d.id_vanzare = f.id_vanzare AND d.sters = 0
|
||||||
|
LEFT JOIN VANZARI_CURSURI c ON d.id_vanzare = c.id_vanzare
|
||||||
|
AND d.id_valuta = c.id_valuta
|
||||||
LEFT JOIN nom_parteneri p ON f.id_part = p.id_part
|
LEFT JOIN nom_parteneri p ON f.id_part = p.id_part
|
||||||
WHERE f.sters = 0
|
WHERE f.sters = 0
|
||||||
AND f.tip > 0 AND f.tip NOT IN (7, 8, 9, 24)
|
AND f.tip > 0 AND f.tip NOT IN (7, 8, 9, 24)
|
||||||
AND f.data_act >= ADD_MONTHS(:data_referinta, -:months)
|
AND f.data_act >= ADD_MONTHS(:data_referinta, -:months)
|
||||||
AND f.data_act < :data_referinta
|
AND f.data_act < :data_referinta
|
||||||
GROUP BY f.id_part, p.denumire, p.cod_fiscal
|
GROUP BY f.id_part, p.denumire, p.cod_fiscal
|
||||||
HAVING SUM(d.cantitate * CASE WHEN d.pret_cu_tva = 1 THEN d.pret / (1 + d.proc_tvav/100) ELSE d.pret END) > :min_sales
|
HAVING SUM(d.cantitate * ((CASE WHEN d.pret_cu_tva = 1 THEN round((ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) / d.proc_tvav, 4) ELSE (ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) END) - ROUND(NVL(c.curs, 1) * NVL(d.discount_unitar, 4) / NVL(c.multiplicator, 1), 4))) > :min_sales
|
||||||
)
|
)
|
||||||
WHERE procent_marja < :margin_threshold
|
WHERE procent_marja < :margin_threshold
|
||||||
ORDER BY vanzari_fara_tva DESC
|
ORDER BY vanzari_fara_tva DESC
|
||||||
@@ -76,16 +80,18 @@ SELECT /*+ LEADING(f d) USE_NL(d) INDEX(f IDX_VANZARI_NR) */
|
|||||||
NVL(sg.grupa, 'NECLASIFICAT') AS grupa,
|
NVL(sg.grupa, 'NECLASIFICAT') AS grupa,
|
||||||
NVL(sg.subgrupa, 'NECLASIFICAT') AS subgrupa,
|
NVL(sg.subgrupa, 'NECLASIFICAT') AS subgrupa,
|
||||||
COUNT(DISTINCT f.id_vanzare) AS nr_facturi,
|
COUNT(DISTINCT f.id_vanzare) AS nr_facturi,
|
||||||
ROUND(SUM(d.cantitate * CASE WHEN d.pret_cu_tva = 1 THEN d.pret / (1 + d.proc_tvav/100) ELSE d.pret END), 2) AS vanzari_fara_tva,
|
ROUND(SUM(d.cantitate * ((CASE WHEN d.pret_cu_tva = 1 THEN round((ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) / d.proc_tvav, 4) ELSE (ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) END) - ROUND(NVL(c.curs, 1) * NVL(d.discount_unitar, 4) / NVL(c.multiplicator, 1), 4))), 2) AS vanzari_fara_tva,
|
||||||
ROUND(SUM(d.cantitate * d.pret_achizitie), 2) AS cost_total,
|
ROUND(SUM(d.cantitate * d.pret_achizitie), 2) AS cost_total,
|
||||||
ROUND(SUM(d.cantitate * (CASE WHEN d.pret_cu_tva = 1 THEN d.pret / (1 + d.proc_tvav/100) ELSE d.pret END - d.pret_achizitie)), 2) AS marja_bruta,
|
ROUND(SUM(d.cantitate * (((CASE WHEN d.pret_cu_tva = 1 THEN round((ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) / d.proc_tvav, 4) ELSE (ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) END) - ROUND(NVL(c.curs, 1) * NVL(d.discount_unitar, 4) / NVL(c.multiplicator, 1), 4)) - d.pret_achizitie)), 2) AS marja_bruta,
|
||||||
ROUND(
|
ROUND(
|
||||||
CASE WHEN SUM(d.cantitate * CASE WHEN d.pret_cu_tva = 1 THEN d.pret / (1 + d.proc_tvav/100) ELSE d.pret END) > 0
|
CASE WHEN SUM(d.cantitate * ((CASE WHEN d.pret_cu_tva = 1 THEN round((ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) / d.proc_tvav, 4) ELSE (ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) END) - ROUND(NVL(c.curs, 1) * NVL(d.discount_unitar, 4) / NVL(c.multiplicator, 1), 4))) > 0
|
||||||
THEN SUM(d.cantitate * (CASE WHEN d.pret_cu_tva = 1 THEN d.pret / (1 + d.proc_tvav/100) ELSE d.pret END - d.pret_achizitie)) * 100.0 / SUM(d.cantitate * CASE WHEN d.pret_cu_tva = 1 THEN d.pret / (1 + d.proc_tvav/100) ELSE d.pret END)
|
THEN SUM(d.cantitate * (((CASE WHEN d.pret_cu_tva = 1 THEN round((ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) / d.proc_tvav, 4) ELSE (ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) END) - ROUND(NVL(c.curs, 1) * NVL(d.discount_unitar, 4) / NVL(c.multiplicator, 1), 4)) - d.pret_achizitie)) * 100.0 / SUM(d.cantitate * ((CASE WHEN d.pret_cu_tva = 1 THEN round((ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) / d.proc_tvav, 4) ELSE (ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) END) - ROUND(NVL(c.curs, 1) * NVL(d.discount_unitar, 4) / NVL(c.multiplicator, 1), 4)))
|
||||||
ELSE 0 END
|
ELSE 0 END
|
||||||
, 2) AS procent_marja
|
, 2) AS procent_marja
|
||||||
FROM vanzari f
|
FROM vanzari f
|
||||||
JOIN vanzari_detalii d ON d.id_vanzare = f.id_vanzare AND d.sters = 0
|
JOIN vanzari_detalii d ON d.id_vanzare = f.id_vanzare AND d.sters = 0
|
||||||
|
LEFT JOIN VANZARI_CURSURI c ON d.id_vanzare = c.id_vanzare
|
||||||
|
AND d.id_valuta = c.id_valuta
|
||||||
LEFT JOIN nom_articole art ON d.id_articol = art.id_articol
|
LEFT JOIN nom_articole art ON d.id_articol = art.id_articol
|
||||||
LEFT JOIN vgest_art_sbgr sg ON art.id_subgrupa = sg.id_subgrupa
|
LEFT JOIN vgest_art_sbgr sg ON art.id_subgrupa = sg.id_subgrupa
|
||||||
WHERE f.sters = 0
|
WHERE f.sters = 0
|
||||||
@@ -106,16 +112,18 @@ SELECT /*+ LEADING(f d) USE_NL(d) INDEX(f IDX_VANZARI_NR) */
|
|||||||
WHEN d.cont = '301' THEN 'Materii prime'
|
WHEN d.cont = '301' THEN 'Materii prime'
|
||||||
ELSE 'Marfă revândută'
|
ELSE 'Marfă revândută'
|
||||||
END AS tip_produs,
|
END AS tip_produs,
|
||||||
ROUND(SUM(d.cantitate * CASE WHEN d.pret_cu_tva = 1 THEN d.pret / (1 + d.proc_tvav/100) ELSE d.pret END), 2) AS vanzari_fara_tva,
|
ROUND(SUM(d.cantitate * ((CASE WHEN d.pret_cu_tva = 1 THEN round((ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) / d.proc_tvav, 4) ELSE (ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) END) - ROUND(NVL(c.curs, 1) * NVL(d.discount_unitar, 4) / NVL(c.multiplicator, 1), 4))), 2) AS vanzari_fara_tva,
|
||||||
ROUND(SUM(d.cantitate * d.pret_achizitie), 2) AS cost_total,
|
ROUND(SUM(d.cantitate * d.pret_achizitie), 2) AS cost_total,
|
||||||
ROUND(SUM(d.cantitate * (CASE WHEN d.pret_cu_tva = 1 THEN d.pret / (1 + d.proc_tvav/100) ELSE d.pret END - d.pret_achizitie)), 2) AS marja_bruta,
|
ROUND(SUM(d.cantitate * (((CASE WHEN d.pret_cu_tva = 1 THEN round((ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) / d.proc_tvav, 4) ELSE (ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) END) - ROUND(NVL(c.curs, 1) * NVL(d.discount_unitar, 4) / NVL(c.multiplicator, 1), 4)) - d.pret_achizitie)), 2) AS marja_bruta,
|
||||||
ROUND(
|
ROUND(
|
||||||
CASE WHEN SUM(d.cantitate * CASE WHEN d.pret_cu_tva = 1 THEN d.pret / (1 + d.proc_tvav/100) ELSE d.pret END) > 0
|
CASE WHEN SUM(d.cantitate * ((CASE WHEN d.pret_cu_tva = 1 THEN round((ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) / d.proc_tvav, 4) ELSE (ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) END) - ROUND(NVL(c.curs, 1) * NVL(d.discount_unitar, 4) / NVL(c.multiplicator, 1), 4))) > 0
|
||||||
THEN SUM(d.cantitate * (CASE WHEN d.pret_cu_tva = 1 THEN d.pret / (1 + d.proc_tvav/100) ELSE d.pret END - d.pret_achizitie)) * 100.0 / SUM(d.cantitate * CASE WHEN d.pret_cu_tva = 1 THEN d.pret / (1 + d.proc_tvav/100) ELSE d.pret END)
|
THEN SUM(d.cantitate * (((CASE WHEN d.pret_cu_tva = 1 THEN round((ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) / d.proc_tvav, 4) ELSE (ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) END) - ROUND(NVL(c.curs, 1) * NVL(d.discount_unitar, 4) / NVL(c.multiplicator, 1), 4)) - d.pret_achizitie)) * 100.0 / SUM(d.cantitate * ((CASE WHEN d.pret_cu_tva = 1 THEN round((ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) / d.proc_tvav, 4) ELSE (ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) END) - ROUND(NVL(c.curs, 1) * NVL(d.discount_unitar, 4) / NVL(c.multiplicator, 1), 4)))
|
||||||
ELSE 0 END
|
ELSE 0 END
|
||||||
, 2) AS procent_marja
|
, 2) AS procent_marja
|
||||||
FROM vanzari f
|
FROM vanzari f
|
||||||
JOIN vanzari_detalii d ON d.id_vanzare = f.id_vanzare AND d.sters = 0
|
JOIN vanzari_detalii d ON d.id_vanzare = f.id_vanzare AND d.sters = 0
|
||||||
|
LEFT JOIN VANZARI_CURSURI c ON d.id_vanzare = c.id_vanzare
|
||||||
|
AND d.id_valuta = c.id_valuta
|
||||||
WHERE f.sters = 0
|
WHERE f.sters = 0
|
||||||
AND f.tip > 0 AND f.tip NOT IN (7, 8, 9, 24)
|
AND f.tip > 0 AND f.tip NOT IN (7, 8, 9, 24)
|
||||||
AND f.data_act >= ADD_MONTHS(:data_referinta, -:months)
|
AND f.data_act >= ADD_MONTHS(:data_referinta, -:months)
|
||||||
@@ -139,11 +147,13 @@ WITH preturi_detalii AS (
|
|||||||
g.subgrupa,
|
g.subgrupa,
|
||||||
f.id_part,
|
f.id_part,
|
||||||
p.denumire as client,
|
p.denumire as client,
|
||||||
CASE WHEN d.pret_cu_tva = 1 THEN d.pret / (1 + d.proc_tvav/100) ELSE d.pret END AS pret_fara_tva,
|
((CASE WHEN d.pret_cu_tva = 1 THEN round((ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) / d.proc_tvav, 4) ELSE (ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) END) - ROUND(NVL(c.curs, 1) * NVL(d.discount_unitar, 4) / NVL(c.multiplicator, 1), 4)) AS pret_fara_tva,
|
||||||
d.cantitate,
|
d.cantitate,
|
||||||
MIN(CASE WHEN d.pret_cu_tva = 1 THEN d.pret / (1 + d.proc_tvav/100) ELSE d.pret END) OVER (PARTITION BY d.id_articol) AS pret_min_global
|
MIN(((CASE WHEN d.pret_cu_tva = 1 THEN round((ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) / d.proc_tvav, 4) ELSE (ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) END) - ROUND(NVL(c.curs, 1) * NVL(d.discount_unitar, 4) / NVL(c.multiplicator, 1), 4))) OVER (PARTITION BY d.id_articol) AS pret_min_global
|
||||||
FROM vanzari f
|
FROM vanzari f
|
||||||
JOIN vanzari_detalii d ON d.id_vanzare = f.id_vanzare AND d.sters = 0
|
JOIN vanzari_detalii d ON d.id_vanzare = f.id_vanzare AND d.sters = 0
|
||||||
|
LEFT JOIN VANZARI_CURSURI c ON d.id_vanzare = c.id_vanzare
|
||||||
|
AND d.id_valuta = c.id_valuta
|
||||||
LEFT JOIN nom_parteneri p ON f.id_part = p.id_part
|
LEFT JOIN nom_parteneri p ON f.id_part = p.id_part
|
||||||
LEFT JOIN nom_articole a ON d.id_articol = a.id_articol
|
LEFT JOIN nom_articole a ON d.id_articol = a.id_articol
|
||||||
LEFT JOIN gest_art_sbgr g ON a.id_subgrupa = g.id_subgrupa
|
LEFT JOIN gest_art_sbgr g ON a.id_subgrupa = g.id_subgrupa
|
||||||
@@ -182,10 +192,12 @@ WITH base_prices AS (
|
|||||||
d.id_articol,
|
d.id_articol,
|
||||||
f.id_part,
|
f.id_part,
|
||||||
p.denumire AS client,
|
p.denumire AS client,
|
||||||
CASE WHEN d.pret_cu_tva = 1 THEN d.pret / (1 + d.proc_tvav/100) ELSE d.pret END AS pret_fara_tva,
|
((CASE WHEN d.pret_cu_tva = 1 THEN round((ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) / d.proc_tvav, 4) ELSE (ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) END) - ROUND(NVL(c.curs, 1) * NVL(d.discount_unitar, 4) / NVL(c.multiplicator, 1), 4)) AS pret_fara_tva,
|
||||||
d.cantitate
|
d.cantitate
|
||||||
FROM VANZARI f
|
FROM VANZARI f
|
||||||
JOIN VANZARI_DETALII d ON d.id_vanzare = f.id_vanzare
|
JOIN VANZARI_DETALII d ON d.id_vanzare = f.id_vanzare
|
||||||
|
LEFT JOIN VANZARI_CURSURI c ON d.id_vanzare = c.id_vanzare
|
||||||
|
AND d.id_valuta = c.id_valuta
|
||||||
JOIN NOM_PARTENERI p ON f.id_part = p.id_part
|
JOIN NOM_PARTENERI p ON f.id_part = p.id_part
|
||||||
WHERE f.sters = 0 AND d.sters = 0
|
WHERE f.sters = 0 AND d.sters = 0
|
||||||
AND f.tip > 0 AND f.tip NOT IN (7, 8, 9, 24)
|
AND f.tip > 0 AND f.tip NOT IN (7, 8, 9, 24)
|
||||||
@@ -228,11 +240,13 @@ SELECT /*+ LEADING(f d) USE_NL(d) INDEX(f IDX_VANZARI_NR) */
|
|||||||
p.denumire AS client,
|
p.denumire AS client,
|
||||||
NVL2(d.id_articol, art.denumire, d.explicatie) AS produs,
|
NVL2(d.id_articol, art.denumire, d.explicatie) AS produs,
|
||||||
d.cantitate,
|
d.cantitate,
|
||||||
ROUND(CASE WHEN d.pret_cu_tva = 1 THEN d.pret / (1 + d.proc_tvav/100) ELSE d.pret END, 2) AS pret_vanzare,
|
ROUND(((CASE WHEN d.pret_cu_tva = 1 THEN round((ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) / d.proc_tvav, 4) ELSE (ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) END) - ROUND(NVL(c.curs, 1) * NVL(d.discount_unitar, 4) / NVL(c.multiplicator, 1), 4)), 2) AS pret_vanzare,
|
||||||
ROUND(d.pret_achizitie, 2) AS cost,
|
ROUND(d.pret_achizitie, 2) AS cost,
|
||||||
ROUND((CASE WHEN d.pret_cu_tva = 1 THEN d.pret / (1 + d.proc_tvav/100) ELSE d.pret END - d.pret_achizitie) * d.cantitate, 2) AS pierdere
|
ROUND((((CASE WHEN d.pret_cu_tva = 1 THEN round((ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) / d.proc_tvav, 4) ELSE (ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) END) - ROUND(NVL(c.curs, 1) * NVL(d.discount_unitar, 4) / NVL(c.multiplicator, 1), 4)) - d.pret_achizitie) * d.cantitate, 2) AS pierdere
|
||||||
FROM vanzari f
|
FROM vanzari f
|
||||||
JOIN vanzari_detalii d ON d.id_vanzare = f.id_vanzare AND d.sters = 0
|
JOIN vanzari_detalii d ON d.id_vanzare = f.id_vanzare AND d.sters = 0
|
||||||
|
LEFT JOIN VANZARI_CURSURI c ON d.id_vanzare = c.id_vanzare
|
||||||
|
AND d.id_valuta = c.id_valuta
|
||||||
LEFT JOIN nom_parteneri p ON f.id_part = p.id_part
|
LEFT JOIN nom_parteneri p ON f.id_part = p.id_part
|
||||||
LEFT JOIN nom_articole art ON d.id_articol = art.id_articol
|
LEFT JOIN nom_articole art ON d.id_articol = art.id_articol
|
||||||
WHERE f.sters = 0
|
WHERE f.sters = 0
|
||||||
@@ -241,7 +255,7 @@ WHERE f.sters = 0
|
|||||||
AND f.data_act < :data_referinta
|
AND f.data_act < :data_referinta
|
||||||
AND d.pret_achizitie > 0
|
AND d.pret_achizitie > 0
|
||||||
AND d.pret > 0
|
AND d.pret > 0
|
||||||
AND CASE WHEN d.pret_cu_tva = 1 THEN d.pret / (1 + d.proc_tvav/100) ELSE d.pret END < d.pret_achizitie
|
AND ((CASE WHEN d.pret_cu_tva = 1 THEN round((ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) / d.proc_tvav, 4) ELSE (ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) END) - ROUND(NVL(c.curs, 1) * NVL(d.discount_unitar, 4) / NVL(c.multiplicator, 1), 4)) < d.pret_achizitie
|
||||||
ORDER BY pierdere ASC
|
ORDER BY pierdere ASC
|
||||||
FETCH FIRST 100 ROWS ONLY
|
FETCH FIRST 100 ROWS ONLY
|
||||||
"""
|
"""
|
||||||
@@ -255,12 +269,14 @@ WITH vanzari_perioade AS (
|
|||||||
f.id_part,
|
f.id_part,
|
||||||
p.denumire AS client,
|
p.denumire AS client,
|
||||||
SUM(CASE WHEN f.data_act >= ADD_MONTHS(:data_referinta, -12)
|
SUM(CASE WHEN f.data_act >= ADD_MONTHS(:data_referinta, -12)
|
||||||
THEN d.cantitate * CASE WHEN d.pret_cu_tva = 1 THEN d.pret / (1 + d.proc_tvav/100) ELSE d.pret END ELSE 0 END) AS vanzari_an_curent,
|
THEN d.cantitate * ((CASE WHEN d.pret_cu_tva = 1 THEN round((ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) / d.proc_tvav, 4) ELSE (ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) END) - ROUND(NVL(c.curs, 1) * NVL(d.discount_unitar, 4) / NVL(c.multiplicator, 1), 4)) ELSE 0 END) AS vanzari_an_curent,
|
||||||
SUM(CASE WHEN f.data_act >= ADD_MONTHS(:data_referinta, -24)
|
SUM(CASE WHEN f.data_act >= ADD_MONTHS(:data_referinta, -24)
|
||||||
AND f.data_act < ADD_MONTHS(:data_referinta, -12)
|
AND f.data_act < ADD_MONTHS(:data_referinta, -12)
|
||||||
THEN d.cantitate * CASE WHEN d.pret_cu_tva = 1 THEN d.pret / (1 + d.proc_tvav/100) ELSE d.pret END ELSE 0 END) AS vanzari_an_trecut
|
THEN d.cantitate * ((CASE WHEN d.pret_cu_tva = 1 THEN round((ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) / d.proc_tvav, 4) ELSE (ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) END) - ROUND(NVL(c.curs, 1) * NVL(d.discount_unitar, 4) / NVL(c.multiplicator, 1), 4)) ELSE 0 END) AS vanzari_an_trecut
|
||||||
FROM vanzari f
|
FROM vanzari f
|
||||||
JOIN vanzari_detalii d ON d.id_vanzare = f.id_vanzare AND d.sters = 0
|
JOIN vanzari_detalii d ON d.id_vanzare = f.id_vanzare AND d.sters = 0
|
||||||
|
LEFT JOIN VANZARI_CURSURI c ON d.id_vanzare = c.id_vanzare
|
||||||
|
AND d.id_valuta = c.id_valuta
|
||||||
LEFT JOIN nom_parteneri p ON f.id_part = p.id_part
|
LEFT JOIN nom_parteneri p ON f.id_part = p.id_part
|
||||||
WHERE f.sters = 0
|
WHERE f.sters = 0
|
||||||
AND f.tip > 0 AND f.tip NOT IN (7, 8, 9, 24)
|
AND f.tip > 0 AND f.tip NOT IN (7, 8, 9, 24)
|
||||||
@@ -295,9 +311,11 @@ ORDER BY variatie_procent DESC NULLS LAST
|
|||||||
CONCENTRARE_CLIENTI = """
|
CONCENTRARE_CLIENTI = """
|
||||||
WITH total_vanzari AS (
|
WITH total_vanzari AS (
|
||||||
SELECT /*+ LEADING(f d) USE_NL(d) INDEX(f IDX_VANZARI_NR) */
|
SELECT /*+ LEADING(f d) USE_NL(d) INDEX(f IDX_VANZARI_NR) */
|
||||||
SUM(d.cantitate * CASE WHEN d.pret_cu_tva = 1 THEN d.pret / (1 + d.proc_tvav/100) ELSE d.pret END) AS total
|
SUM(d.cantitate * ((CASE WHEN d.pret_cu_tva = 1 THEN round((ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) / d.proc_tvav, 4) ELSE (ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) END) - ROUND(NVL(c.curs, 1) * NVL(d.discount_unitar, 4) / NVL(c.multiplicator, 1), 4))) AS total
|
||||||
FROM vanzari f
|
FROM vanzari f
|
||||||
JOIN vanzari_detalii d ON d.id_vanzare = f.id_vanzare AND d.sters = 0
|
JOIN vanzari_detalii d ON d.id_vanzare = f.id_vanzare AND d.sters = 0
|
||||||
|
LEFT JOIN VANZARI_CURSURI c ON d.id_vanzare = c.id_vanzare
|
||||||
|
AND d.id_valuta = c.id_valuta
|
||||||
WHERE f.sters = 0
|
WHERE f.sters = 0
|
||||||
AND f.tip > 0 AND f.tip NOT IN (7, 8, 9, 24)
|
AND f.tip > 0 AND f.tip NOT IN (7, 8, 9, 24)
|
||||||
AND f.data_act >= ADD_MONTHS(:data_referinta, -:months)
|
AND f.data_act >= ADD_MONTHS(:data_referinta, -:months)
|
||||||
@@ -306,10 +324,12 @@ WITH total_vanzari AS (
|
|||||||
vanzari_client AS (
|
vanzari_client AS (
|
||||||
SELECT /*+ LEADING(f d) USE_NL(d) INDEX(f IDX_VANZARI_NR) */
|
SELECT /*+ LEADING(f d) USE_NL(d) INDEX(f IDX_VANZARI_NR) */
|
||||||
p.denumire AS client,
|
p.denumire AS client,
|
||||||
SUM(d.cantitate * CASE WHEN d.pret_cu_tva = 1 THEN d.pret / (1 + d.proc_tvav/100) ELSE d.pret END) AS vanzari,
|
SUM(d.cantitate * ((CASE WHEN d.pret_cu_tva = 1 THEN round((ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) / d.proc_tvav, 4) ELSE (ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) END) - ROUND(NVL(c.curs, 1) * NVL(d.discount_unitar, 4) / NVL(c.multiplicator, 1), 4))) AS vanzari,
|
||||||
ROW_NUMBER() OVER (ORDER BY SUM(d.cantitate * CASE WHEN d.pret_cu_tva = 1 THEN d.pret / (1 + d.proc_tvav/100) ELSE d.pret END) DESC) AS rn
|
ROW_NUMBER() OVER (ORDER BY SUM(d.cantitate * ((CASE WHEN d.pret_cu_tva = 1 THEN round((ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) / d.proc_tvav, 4) ELSE (ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) END) - ROUND(NVL(c.curs, 1) * NVL(d.discount_unitar, 4) / NVL(c.multiplicator, 1), 4))) DESC) AS rn
|
||||||
FROM vanzari f
|
FROM vanzari f
|
||||||
JOIN vanzari_detalii d ON d.id_vanzare = f.id_vanzare AND d.sters = 0
|
JOIN vanzari_detalii d ON d.id_vanzare = f.id_vanzare AND d.sters = 0
|
||||||
|
LEFT JOIN VANZARI_CURSURI c ON d.id_vanzare = c.id_vanzare
|
||||||
|
AND d.id_valuta = c.id_valuta
|
||||||
LEFT JOIN nom_parteneri p ON f.id_part = p.id_part
|
LEFT JOIN nom_parteneri p ON f.id_part = p.id_part
|
||||||
WHERE f.sters = 0
|
WHERE f.sters = 0
|
||||||
AND f.tip > 0 AND f.tip NOT IN (7, 8, 9, 24)
|
AND f.tip > 0 AND f.tip NOT IN (7, 8, 9, 24)
|
||||||
@@ -359,12 +379,14 @@ ORDER BY rn
|
|||||||
VANZARI_LUNARE = """
|
VANZARI_LUNARE = """
|
||||||
SELECT
|
SELECT
|
||||||
TO_CHAR(f.data_act, 'YYYY-MM') AS luna,
|
TO_CHAR(f.data_act, 'YYYY-MM') AS luna,
|
||||||
ROUND(SUM(d.cantitate * CASE WHEN d.pret_cu_tva = 1 THEN d.pret / (1 + d.proc_tvav/100) ELSE d.pret END), 2) AS vanzari_fara_tva,
|
ROUND(SUM(d.cantitate * ((CASE WHEN d.pret_cu_tva = 1 THEN round((ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) / d.proc_tvav, 4) ELSE (ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) END) - ROUND(NVL(c.curs, 1) * NVL(d.discount_unitar, 4) / NVL(c.multiplicator, 1), 4))), 2) AS vanzari_fara_tva,
|
||||||
ROUND(SUM(d.cantitate * (CASE WHEN d.pret_cu_tva = 1 THEN d.pret / (1 + d.proc_tvav/100) ELSE d.pret END - d.pret_achizitie)), 2) AS marja_bruta,
|
ROUND(SUM(d.cantitate * (((CASE WHEN d.pret_cu_tva = 1 THEN round((ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) / d.proc_tvav, 4) ELSE (ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) END) - ROUND(NVL(c.curs, 1) * NVL(d.discount_unitar, 4) / NVL(c.multiplicator, 1), 4)) - d.pret_achizitie)), 2) AS marja_bruta,
|
||||||
COUNT(DISTINCT f.id_vanzare) AS nr_facturi,
|
COUNT(DISTINCT f.id_vanzare) AS nr_facturi,
|
||||||
COUNT(DISTINCT f.id_part) AS nr_clienti
|
COUNT(DISTINCT f.id_part) AS nr_clienti
|
||||||
FROM VANZARI f
|
FROM VANZARI f
|
||||||
JOIN VANZARI_DETALII d ON d.id_vanzare = f.id_vanzare
|
JOIN VANZARI_DETALII d ON d.id_vanzare = f.id_vanzare
|
||||||
|
LEFT JOIN VANZARI_CURSURI c ON d.id_vanzare = c.id_vanzare
|
||||||
|
AND d.id_valuta = c.id_valuta
|
||||||
WHERE f.sters = 0 AND d.sters = 0
|
WHERE f.sters = 0 AND d.sters = 0
|
||||||
AND f.tip > 0 AND f.tip NOT IN (7, 8, 9, 24)
|
AND f.tip > 0 AND f.tip NOT IN (7, 8, 9, 24)
|
||||||
AND f.data_act >= ADD_MONTHS(:data_referinta, -24)
|
AND f.data_act >= ADD_MONTHS(:data_referinta, -24)
|
||||||
@@ -513,10 +535,12 @@ WITH base_data AS (
|
|||||||
SELECT
|
SELECT
|
||||||
f.id_vanzare,
|
f.id_vanzare,
|
||||||
f.id_part,
|
f.id_part,
|
||||||
d.cantitate * CASE WHEN d.pret_cu_tva = 1 THEN d.pret / (1 + d.proc_tvav/100) ELSE d.pret END AS vanzare_fara_tva,
|
d.cantitate * ((CASE WHEN d.pret_cu_tva = 1 THEN round((ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) / d.proc_tvav, 4) ELSE (ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) END) - ROUND(NVL(c.curs, 1) * NVL(d.discount_unitar, 4) / NVL(c.multiplicator, 1), 4)) AS vanzare_fara_tva,
|
||||||
d.cantitate * (CASE WHEN d.pret_cu_tva = 1 THEN d.pret / (1 + d.proc_tvav/100) ELSE d.pret END - d.pret_achizitie) AS marja
|
d.cantitate * (((CASE WHEN d.pret_cu_tva = 1 THEN round((ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) / d.proc_tvav, 4) ELSE (ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) END) - ROUND(NVL(c.curs, 1) * NVL(d.discount_unitar, 4) / NVL(c.multiplicator, 1), 4)) - d.pret_achizitie) AS marja
|
||||||
FROM VANZARI f
|
FROM VANZARI f
|
||||||
JOIN VANZARI_DETALII d ON d.id_vanzare = f.id_vanzare
|
JOIN VANZARI_DETALII d ON d.id_vanzare = f.id_vanzare
|
||||||
|
LEFT JOIN VANZARI_CURSURI c ON d.id_vanzare = c.id_vanzare
|
||||||
|
AND d.id_valuta = c.id_valuta
|
||||||
WHERE f.sters = 0 AND d.sters = 0
|
WHERE f.sters = 0 AND d.sters = 0
|
||||||
AND f.tip > 0 AND f.tip NOT IN (7, 8, 9, 24)
|
AND f.tip > 0 AND f.tip NOT IN (7, 8, 9, 24)
|
||||||
AND f.data_act >= ADD_MONTHS(:data_referinta, -12)
|
AND f.data_act >= ADD_MONTHS(:data_referinta, -12)
|
||||||
@@ -587,15 +611,17 @@ SELECT /*+ LEADING(f d) USE_NL(d) INDEX(f IDX_VANZARI_NR) */
|
|||||||
NVL(g.subgrupa, 'NECLASIFICAT') AS subgrupa,
|
NVL(g.subgrupa, 'NECLASIFICAT') AS subgrupa,
|
||||||
a.um,
|
a.um,
|
||||||
ROUND(SUM(d.cantitate), 2) AS cantitate_vanduta,
|
ROUND(SUM(d.cantitate), 2) AS cantitate_vanduta,
|
||||||
ROUND(SUM(d.cantitate * CASE WHEN d.pret_cu_tva = 1 THEN d.pret / (1 + d.proc_tvav/100) ELSE d.pret END), 2) AS valoare_vanzari,
|
ROUND(SUM(d.cantitate * ((CASE WHEN d.pret_cu_tva = 1 THEN round((ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) / d.proc_tvav, 4) ELSE (ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) END) - ROUND(NVL(c.curs, 1) * NVL(d.discount_unitar, 4) / NVL(c.multiplicator, 1), 4))), 2) AS valoare_vanzari,
|
||||||
ROUND(SUM(d.cantitate * (CASE WHEN d.pret_cu_tva = 1 THEN d.pret / (1 + d.proc_tvav/100) ELSE d.pret END - d.pret_achizitie)), 2) AS marja_bruta,
|
ROUND(SUM(d.cantitate * (((CASE WHEN d.pret_cu_tva = 1 THEN round((ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) / d.proc_tvav, 4) ELSE (ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) END) - ROUND(NVL(c.curs, 1) * NVL(d.discount_unitar, 4) / NVL(c.multiplicator, 1), 4)) - d.pret_achizitie)), 2) AS marja_bruta,
|
||||||
ROUND(
|
ROUND(
|
||||||
CASE WHEN SUM(d.cantitate * CASE WHEN d.pret_cu_tva = 1 THEN d.pret / (1 + d.proc_tvav/100) ELSE d.pret END) > 0
|
CASE WHEN SUM(d.cantitate * ((CASE WHEN d.pret_cu_tva = 1 THEN round((ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) / d.proc_tvav, 4) ELSE (ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) END) - ROUND(NVL(c.curs, 1) * NVL(d.discount_unitar, 4) / NVL(c.multiplicator, 1), 4))) > 0
|
||||||
THEN SUM(d.cantitate * (CASE WHEN d.pret_cu_tva = 1 THEN d.pret / (1 + d.proc_tvav/100) ELSE d.pret END - d.pret_achizitie)) * 100.0 / SUM(d.cantitate * CASE WHEN d.pret_cu_tva = 1 THEN d.pret / (1 + d.proc_tvav/100) ELSE d.pret END)
|
THEN SUM(d.cantitate * (((CASE WHEN d.pret_cu_tva = 1 THEN round((ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) / d.proc_tvav, 4) ELSE (ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) END) - ROUND(NVL(c.curs, 1) * NVL(d.discount_unitar, 4) / NVL(c.multiplicator, 1), 4)) - d.pret_achizitie)) * 100.0 / SUM(d.cantitate * ((CASE WHEN d.pret_cu_tva = 1 THEN round((ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) / d.proc_tvav, 4) ELSE (ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) END) - ROUND(NVL(c.curs, 1) * NVL(d.discount_unitar, 4) / NVL(c.multiplicator, 1), 4)))
|
||||||
ELSE 0 END
|
ELSE 0 END
|
||||||
, 2) AS procent_marja
|
, 2) AS procent_marja
|
||||||
FROM vanzari f
|
FROM vanzari f
|
||||||
JOIN vanzari_detalii d ON d.id_vanzare = f.id_vanzare AND d.sters = 0
|
JOIN vanzari_detalii d ON d.id_vanzare = f.id_vanzare AND d.sters = 0
|
||||||
|
LEFT JOIN VANZARI_CURSURI c ON d.id_vanzare = c.id_vanzare
|
||||||
|
AND d.id_valuta = c.id_valuta
|
||||||
LEFT JOIN nom_articole a ON d.id_articol = a.id_articol
|
LEFT JOIN nom_articole a ON d.id_articol = a.id_articol
|
||||||
LEFT JOIN gest_art_sbgr g ON a.id_subgrupa = g.id_subgrupa
|
LEFT JOIN gest_art_sbgr g ON a.id_subgrupa = g.id_subgrupa
|
||||||
WHERE f.sters = 0
|
WHERE f.sters = 0
|
||||||
@@ -614,15 +640,17 @@ MARJA_PER_GESTIUNE = """
|
|||||||
SELECT /*+ LEADING(f d) USE_NL(d) INDEX(f IDX_VANZARI_NR) */
|
SELECT /*+ LEADING(f d) USE_NL(d) INDEX(f IDX_VANZARI_NR) */
|
||||||
g.nume_gestiune,
|
g.nume_gestiune,
|
||||||
COUNT(DISTINCT f.id_vanzare) AS nr_facturi,
|
COUNT(DISTINCT f.id_vanzare) AS nr_facturi,
|
||||||
ROUND(SUM(d.cantitate * CASE WHEN d.pret_cu_tva = 1 THEN d.pret / (1 + d.proc_tvav/100) ELSE d.pret END), 2) AS vanzari_fara_tva,
|
ROUND(SUM(d.cantitate * ((CASE WHEN d.pret_cu_tva = 1 THEN round((ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) / d.proc_tvav, 4) ELSE (ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) END) - ROUND(NVL(c.curs, 1) * NVL(d.discount_unitar, 4) / NVL(c.multiplicator, 1), 4))), 2) AS vanzari_fara_tva,
|
||||||
ROUND(SUM(d.cantitate * (CASE WHEN d.pret_cu_tva = 1 THEN d.pret / (1 + d.proc_tvav/100) ELSE d.pret END - d.pret_achizitie)), 2) AS marja_bruta,
|
ROUND(SUM(d.cantitate * (((CASE WHEN d.pret_cu_tva = 1 THEN round((ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) / d.proc_tvav, 4) ELSE (ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) END) - ROUND(NVL(c.curs, 1) * NVL(d.discount_unitar, 4) / NVL(c.multiplicator, 1), 4)) - d.pret_achizitie)), 2) AS marja_bruta,
|
||||||
ROUND(
|
ROUND(
|
||||||
CASE WHEN SUM(d.cantitate * CASE WHEN d.pret_cu_tva = 1 THEN d.pret / (1 + d.proc_tvav/100) ELSE d.pret END) > 0
|
CASE WHEN SUM(d.cantitate * ((CASE WHEN d.pret_cu_tva = 1 THEN round((ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) / d.proc_tvav, 4) ELSE (ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) END) - ROUND(NVL(c.curs, 1) * NVL(d.discount_unitar, 4) / NVL(c.multiplicator, 1), 4))) > 0
|
||||||
THEN SUM(d.cantitate * (CASE WHEN d.pret_cu_tva = 1 THEN d.pret / (1 + d.proc_tvav/100) ELSE d.pret END - d.pret_achizitie)) * 100.0 / SUM(d.cantitate * CASE WHEN d.pret_cu_tva = 1 THEN d.pret / (1 + d.proc_tvav/100) ELSE d.pret END)
|
THEN SUM(d.cantitate * (((CASE WHEN d.pret_cu_tva = 1 THEN round((ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) / d.proc_tvav, 4) ELSE (ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) END) - ROUND(NVL(c.curs, 1) * NVL(d.discount_unitar, 4) / NVL(c.multiplicator, 1), 4)) - d.pret_achizitie)) * 100.0 / SUM(d.cantitate * ((CASE WHEN d.pret_cu_tva = 1 THEN round((ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) / d.proc_tvav, 4) ELSE (ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) END) - ROUND(NVL(c.curs, 1) * NVL(d.discount_unitar, 4) / NVL(c.multiplicator, 1), 4)))
|
||||||
ELSE 0 END
|
ELSE 0 END
|
||||||
, 2) AS procent_marja
|
, 2) AS procent_marja
|
||||||
FROM vanzari f
|
FROM vanzari f
|
||||||
JOIN vanzari_detalii d ON d.id_vanzare = f.id_vanzare AND d.sters = 0
|
JOIN vanzari_detalii d ON d.id_vanzare = f.id_vanzare AND d.sters = 0
|
||||||
|
LEFT JOIN VANZARI_CURSURI c ON d.id_vanzare = c.id_vanzare
|
||||||
|
AND d.id_valuta = c.id_valuta
|
||||||
LEFT JOIN nom_gestiuni g ON d.id_gestiune = g.id_gestiune
|
LEFT JOIN nom_gestiuni g ON d.id_gestiune = g.id_gestiune
|
||||||
JOIN nom_articole a ON d.id_articol = a.id_articol
|
JOIN nom_articole a ON d.id_articol = a.id_articol
|
||||||
WHERE f.sters = 0
|
WHERE f.sters = 0
|
||||||
@@ -644,16 +672,18 @@ SELECT /*+ LEADING(f d) USE_NL(d) INDEX(f IDX_VANZARI_NR) */
|
|||||||
art.um,
|
art.um,
|
||||||
COUNT(DISTINCT f.id_vanzare) AS nr_facturi,
|
COUNT(DISTINCT f.id_vanzare) AS nr_facturi,
|
||||||
ROUND(SUM(d.cantitate), 2) AS cantitate_vanduta,
|
ROUND(SUM(d.cantitate), 2) AS cantitate_vanduta,
|
||||||
ROUND(SUM(d.cantitate * CASE WHEN d.pret_cu_tva = 1 THEN d.pret / (1 + d.proc_tvav/100) ELSE d.pret END), 2) AS vanzari_fara_tva,
|
ROUND(SUM(d.cantitate * ((CASE WHEN d.pret_cu_tva = 1 THEN round((ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) / d.proc_tvav, 4) ELSE (ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) END) - ROUND(NVL(c.curs, 1) * NVL(d.discount_unitar, 4) / NVL(c.multiplicator, 1), 4))), 2) AS vanzari_fara_tva,
|
||||||
ROUND(SUM(d.cantitate * d.pret_achizitie), 2) AS cost_total,
|
ROUND(SUM(d.cantitate * d.pret_achizitie), 2) AS cost_total,
|
||||||
ROUND(SUM(d.cantitate * (CASE WHEN d.pret_cu_tva = 1 THEN d.pret / (1 + d.proc_tvav/100) ELSE d.pret END - d.pret_achizitie)), 2) AS marja_bruta,
|
ROUND(SUM(d.cantitate * (((CASE WHEN d.pret_cu_tva = 1 THEN round((ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) / d.proc_tvav, 4) ELSE (ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) END) - ROUND(NVL(c.curs, 1) * NVL(d.discount_unitar, 4) / NVL(c.multiplicator, 1), 4)) - d.pret_achizitie)), 2) AS marja_bruta,
|
||||||
ROUND(
|
ROUND(
|
||||||
CASE WHEN SUM(d.cantitate * CASE WHEN d.pret_cu_tva = 1 THEN d.pret / (1 + d.proc_tvav/100) ELSE d.pret END) > 0
|
CASE WHEN SUM(d.cantitate * ((CASE WHEN d.pret_cu_tva = 1 THEN round((ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) / d.proc_tvav, 4) ELSE (ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) END) - ROUND(NVL(c.curs, 1) * NVL(d.discount_unitar, 4) / NVL(c.multiplicator, 1), 4))) > 0
|
||||||
THEN SUM(d.cantitate * (CASE WHEN d.pret_cu_tva = 1 THEN d.pret / (1 + d.proc_tvav/100) ELSE d.pret END - d.pret_achizitie)) * 100.0 / SUM(d.cantitate * CASE WHEN d.pret_cu_tva = 1 THEN d.pret / (1 + d.proc_tvav/100) ELSE d.pret END)
|
THEN SUM(d.cantitate * (((CASE WHEN d.pret_cu_tva = 1 THEN round((ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) / d.proc_tvav, 4) ELSE (ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) END) - ROUND(NVL(c.curs, 1) * NVL(d.discount_unitar, 4) / NVL(c.multiplicator, 1), 4)) - d.pret_achizitie)) * 100.0 / SUM(d.cantitate * ((CASE WHEN d.pret_cu_tva = 1 THEN round((ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) / d.proc_tvav, 4) ELSE (ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) END) - ROUND(NVL(c.curs, 1) * NVL(d.discount_unitar, 4) / NVL(c.multiplicator, 1), 4)))
|
||||||
ELSE 0 END
|
ELSE 0 END
|
||||||
, 2) AS procent_marja
|
, 2) AS procent_marja
|
||||||
FROM vanzari f
|
FROM vanzari f
|
||||||
JOIN vanzari_detalii d ON d.id_vanzare = f.id_vanzare AND d.sters = 0
|
JOIN vanzari_detalii d ON d.id_vanzare = f.id_vanzare AND d.sters = 0
|
||||||
|
LEFT JOIN VANZARI_CURSURI c ON d.id_vanzare = c.id_vanzare
|
||||||
|
AND d.id_valuta = c.id_valuta
|
||||||
LEFT JOIN nom_articole art ON d.id_articol = art.id_articol
|
LEFT JOIN nom_articole art ON d.id_articol = art.id_articol
|
||||||
LEFT JOIN vgest_art_sbgr sg ON art.id_subgrupa = sg.id_subgrupa
|
LEFT JOIN vgest_art_sbgr sg ON art.id_subgrupa = sg.id_subgrupa
|
||||||
WHERE f.sters = 0
|
WHERE f.sters = 0
|
||||||
@@ -1101,10 +1131,12 @@ WITH vanzari_detaliate AS (
|
|||||||
WHEN d.cont = '301' THEN 'Materii prime'
|
WHEN d.cont = '301' THEN 'Materii prime'
|
||||||
ELSE 'Marfa revanduta'
|
ELSE 'Marfa revanduta'
|
||||||
END AS linie_business,
|
END AS linie_business,
|
||||||
d.cantitate * CASE WHEN d.pret_cu_tva = 1 THEN d.pret / (1 + d.proc_tvav/100) ELSE d.pret END AS vanzare,
|
d.cantitate * ((CASE WHEN d.pret_cu_tva = 1 THEN round((ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) / d.proc_tvav, 4) ELSE (ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) END) - ROUND(NVL(c.curs, 1) * NVL(d.discount_unitar, 4) / NVL(c.multiplicator, 1), 4)) AS vanzare,
|
||||||
d.cantitate * (CASE WHEN d.pret_cu_tva = 1 THEN d.pret / (1 + d.proc_tvav/100) ELSE d.pret END - d.pret_achizitie) AS marja
|
d.cantitate * (((CASE WHEN d.pret_cu_tva = 1 THEN round((ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) / d.proc_tvav, 4) ELSE (ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) END) - ROUND(NVL(c.curs, 1) * NVL(d.discount_unitar, 4) / NVL(c.multiplicator, 1), 4)) - d.pret_achizitie) AS marja
|
||||||
FROM vanzari f
|
FROM vanzari f
|
||||||
JOIN vanzari_detalii d ON d.id_vanzare = f.id_vanzare AND d.sters = 0
|
JOIN vanzari_detalii d ON d.id_vanzare = f.id_vanzare AND d.sters = 0
|
||||||
|
LEFT JOIN VANZARI_CURSURI c ON d.id_vanzare = c.id_vanzare
|
||||||
|
AND d.id_valuta = c.id_valuta
|
||||||
WHERE f.sters = 0
|
WHERE f.sters = 0
|
||||||
AND f.tip > 0 AND f.tip NOT IN (7, 8, 9, 24)
|
AND f.tip > 0 AND f.tip NOT IN (7, 8, 9, 24)
|
||||||
AND f.data_act >= ADD_MONTHS(:data_referinta, -:months)
|
AND f.data_act >= ADD_MONTHS(:data_referinta, -:months)
|
||||||
@@ -1136,9 +1168,11 @@ WITH vanzari_lunare AS (
|
|||||||
EXTRACT(MONTH FROM f.data_act) AS nr_luna,
|
EXTRACT(MONTH FROM f.data_act) AS nr_luna,
|
||||||
TO_CHAR(f.data_act, 'Month', 'NLS_DATE_LANGUAGE=ROMANIAN') AS luna,
|
TO_CHAR(f.data_act, 'Month', 'NLS_DATE_LANGUAGE=ROMANIAN') AS luna,
|
||||||
EXTRACT(YEAR FROM f.data_act) AS an,
|
EXTRACT(YEAR FROM f.data_act) AS an,
|
||||||
SUM(d.cantitate * CASE WHEN d.pret_cu_tva = 1 THEN d.pret / (1 + d.proc_tvav/100) ELSE d.pret END) AS vanzari
|
SUM(d.cantitate * ((CASE WHEN d.pret_cu_tva = 1 THEN round((ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) / d.proc_tvav, 4) ELSE (ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) END) - ROUND(NVL(c.curs, 1) * NVL(d.discount_unitar, 4) / NVL(c.multiplicator, 1), 4))) AS vanzari
|
||||||
FROM vanzari f
|
FROM vanzari f
|
||||||
JOIN vanzari_detalii d ON d.id_vanzare = f.id_vanzare AND d.sters = 0
|
JOIN vanzari_detalii d ON d.id_vanzare = f.id_vanzare AND d.sters = 0
|
||||||
|
LEFT JOIN VANZARI_CURSURI c ON d.id_vanzare = c.id_vanzare
|
||||||
|
AND d.id_valuta = c.id_valuta
|
||||||
WHERE f.sters = 0
|
WHERE f.sters = 0
|
||||||
AND f.tip > 0 AND f.tip NOT IN (7, 8, 9, 24)
|
AND f.tip > 0 AND f.tip NOT IN (7, 8, 9, 24)
|
||||||
AND f.data_act >= ADD_MONTHS(:data_referinta, -24)
|
AND f.data_act >= ADD_MONTHS(:data_referinta, -24)
|
||||||
@@ -1255,9 +1289,11 @@ WITH frecventa_curenta AS (
|
|||||||
p.denumire AS client,
|
p.denumire AS client,
|
||||||
COUNT(DISTINCT f.id_vanzare) AS comenzi_12_luni,
|
COUNT(DISTINCT f.id_vanzare) AS comenzi_12_luni,
|
||||||
ROUND(COUNT(DISTINCT f.id_vanzare) / 12.0, 2) AS comenzi_pe_luna,
|
ROUND(COUNT(DISTINCT f.id_vanzare) / 12.0, 2) AS comenzi_pe_luna,
|
||||||
ROUND(SUM(d.cantitate * CASE WHEN d.pret_cu_tva = 1 THEN d.pret / (1 + d.proc_tvav/100) ELSE d.pret END), 2) AS valoare_12_luni
|
ROUND(SUM(d.cantitate * ((CASE WHEN d.pret_cu_tva = 1 THEN round((ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) / d.proc_tvav, 4) ELSE (ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) END) - ROUND(NVL(c.curs, 1) * NVL(d.discount_unitar, 4) / NVL(c.multiplicator, 1), 4))), 2) AS valoare_12_luni
|
||||||
FROM vanzari f
|
FROM vanzari f
|
||||||
JOIN vanzari_detalii d ON d.id_vanzare = f.id_vanzare AND d.sters = 0
|
JOIN vanzari_detalii d ON d.id_vanzare = f.id_vanzare AND d.sters = 0
|
||||||
|
LEFT JOIN VANZARI_CURSURI c ON d.id_vanzare = c.id_vanzare
|
||||||
|
AND d.id_valuta = c.id_valuta
|
||||||
LEFT JOIN nom_parteneri p ON f.id_part = p.id_part
|
LEFT JOIN nom_parteneri p ON f.id_part = p.id_part
|
||||||
WHERE f.sters = 0
|
WHERE f.sters = 0
|
||||||
AND f.tip > 0 AND f.tip NOT IN (7, 8, 9, 24)
|
AND f.tip > 0 AND f.tip NOT IN (7, 8, 9, 24)
|
||||||
@@ -1300,9 +1336,11 @@ ORDER BY fc.valoare_12_luni DESC
|
|||||||
CONCENTRARE_RISC = """
|
CONCENTRARE_RISC = """
|
||||||
WITH total_vanzari AS (
|
WITH total_vanzari AS (
|
||||||
SELECT /*+ LEADING(f d) USE_NL(d) INDEX(f IDX_VANZARI_NR) */
|
SELECT /*+ LEADING(f d) USE_NL(d) INDEX(f IDX_VANZARI_NR) */
|
||||||
SUM(d.cantitate * CASE WHEN d.pret_cu_tva = 1 THEN d.pret / (1 + d.proc_tvav/100) ELSE d.pret END) AS total
|
SUM(d.cantitate * ((CASE WHEN d.pret_cu_tva = 1 THEN round((ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) / d.proc_tvav, 4) ELSE (ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) END) - ROUND(NVL(c.curs, 1) * NVL(d.discount_unitar, 4) / NVL(c.multiplicator, 1), 4))) AS total
|
||||||
FROM vanzari f
|
FROM vanzari f
|
||||||
JOIN vanzari_detalii d ON d.id_vanzare = f.id_vanzare AND d.sters = 0
|
JOIN vanzari_detalii d ON d.id_vanzare = f.id_vanzare AND d.sters = 0
|
||||||
|
LEFT JOIN VANZARI_CURSURI c ON d.id_vanzare = c.id_vanzare
|
||||||
|
AND d.id_valuta = c.id_valuta
|
||||||
WHERE f.sters = 0
|
WHERE f.sters = 0
|
||||||
AND f.tip > 0 AND f.tip NOT IN (7, 8, 9, 24)
|
AND f.tip > 0 AND f.tip NOT IN (7, 8, 9, 24)
|
||||||
AND f.data_act >= ADD_MONTHS(:data_referinta, -:months)
|
AND f.data_act >= ADD_MONTHS(:data_referinta, -:months)
|
||||||
@@ -1311,10 +1349,12 @@ WITH total_vanzari AS (
|
|||||||
vanzari_client AS (
|
vanzari_client AS (
|
||||||
SELECT /*+ LEADING(f d) USE_NL(d) INDEX(f IDX_VANZARI_NR) */
|
SELECT /*+ LEADING(f d) USE_NL(d) INDEX(f IDX_VANZARI_NR) */
|
||||||
f.id_part,
|
f.id_part,
|
||||||
SUM(d.cantitate * CASE WHEN d.pret_cu_tva = 1 THEN d.pret / (1 + d.proc_tvav/100) ELSE d.pret END) AS vanzari,
|
SUM(d.cantitate * ((CASE WHEN d.pret_cu_tva = 1 THEN round((ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) / d.proc_tvav, 4) ELSE (ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) END) - ROUND(NVL(c.curs, 1) * NVL(d.discount_unitar, 4) / NVL(c.multiplicator, 1), 4))) AS vanzari,
|
||||||
ROW_NUMBER() OVER (ORDER BY SUM(d.cantitate * CASE WHEN d.pret_cu_tva = 1 THEN d.pret / (1 + d.proc_tvav/100) ELSE d.pret END) DESC) AS rn
|
ROW_NUMBER() OVER (ORDER BY SUM(d.cantitate * ((CASE WHEN d.pret_cu_tva = 1 THEN round((ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) / d.proc_tvav, 4) ELSE (ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) END) - ROUND(NVL(c.curs, 1) * NVL(d.discount_unitar, 4) / NVL(c.multiplicator, 1), 4))) DESC) AS rn
|
||||||
FROM vanzari f
|
FROM vanzari f
|
||||||
JOIN vanzari_detalii d ON d.id_vanzare = f.id_vanzare AND d.sters = 0
|
JOIN vanzari_detalii d ON d.id_vanzare = f.id_vanzare AND d.sters = 0
|
||||||
|
LEFT JOIN VANZARI_CURSURI c ON d.id_vanzare = c.id_vanzare
|
||||||
|
AND d.id_valuta = c.id_valuta
|
||||||
WHERE f.sters = 0
|
WHERE f.sters = 0
|
||||||
AND f.tip > 0 AND f.tip NOT IN (7, 8, 9, 24)
|
AND f.tip > 0 AND f.tip NOT IN (7, 8, 9, 24)
|
||||||
AND f.data_act >= ADD_MONTHS(:data_referinta, -:months)
|
AND f.data_act >= ADD_MONTHS(:data_referinta, -:months)
|
||||||
@@ -1366,11 +1406,13 @@ WITH vanzari_client AS (
|
|||||||
SELECT /*+ LEADING(f d) USE_NL(d) INDEX(f IDX_VANZARI_NR) */
|
SELECT /*+ LEADING(f d) USE_NL(d) INDEX(f IDX_VANZARI_NR) */
|
||||||
f.id_part,
|
f.id_part,
|
||||||
p.denumire AS client,
|
p.denumire AS client,
|
||||||
SUM(d.cantitate * CASE WHEN d.pret_cu_tva = 1 THEN d.pret / (1 + d.proc_tvav/100) ELSE d.pret END) AS vanzari_fara_tva,
|
SUM(d.cantitate * ((CASE WHEN d.pret_cu_tva = 1 THEN round((ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) / d.proc_tvav, 4) ELSE (ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) END) - ROUND(NVL(c.curs, 1) * NVL(d.discount_unitar, 4) / NVL(c.multiplicator, 1), 4))) AS vanzari_fara_tva,
|
||||||
SUM(d.cantitate * d.pret_achizitie) AS cost_total,
|
SUM(d.cantitate * d.pret_achizitie) AS cost_total,
|
||||||
SUM(d.cantitate * (CASE WHEN d.pret_cu_tva = 1 THEN d.pret / (1 + d.proc_tvav/100) ELSE d.pret END - d.pret_achizitie)) AS profit_brut
|
SUM(d.cantitate * (((CASE WHEN d.pret_cu_tva = 1 THEN round((ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) / d.proc_tvav, 4) ELSE (ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) END) - ROUND(NVL(c.curs, 1) * NVL(d.discount_unitar, 4) / NVL(c.multiplicator, 1), 4)) - d.pret_achizitie)) AS profit_brut
|
||||||
FROM vanzari f
|
FROM vanzari f
|
||||||
JOIN vanzari_detalii d ON d.id_vanzare = f.id_vanzare AND d.sters = 0
|
JOIN vanzari_detalii d ON d.id_vanzare = f.id_vanzare AND d.sters = 0
|
||||||
|
LEFT JOIN VANZARI_CURSURI c ON d.id_vanzare = c.id_vanzare
|
||||||
|
AND d.id_valuta = c.id_valuta
|
||||||
LEFT JOIN nom_parteneri p ON f.id_part = p.id_part
|
LEFT JOIN nom_parteneri p ON f.id_part = p.id_part
|
||||||
WHERE f.sters = 0
|
WHERE f.sters = 0
|
||||||
AND f.tip > 0 AND f.tip NOT IN (7, 8, 9, 24)
|
AND f.tip > 0 AND f.tip NOT IN (7, 8, 9, 24)
|
||||||
@@ -1398,20 +1440,22 @@ MARJA_CLIENT_CATEGORIE = """
|
|||||||
SELECT /*+ LEADING(f d) USE_NL(d) INDEX(f IDX_VANZARI_NR) */
|
SELECT /*+ LEADING(f d) USE_NL(d) INDEX(f IDX_VANZARI_NR) */
|
||||||
p.denumire AS client,
|
p.denumire AS client,
|
||||||
NVL(sg.grupa, 'NECLASIFICAT') AS categoria,
|
NVL(sg.grupa, 'NECLASIFICAT') AS categoria,
|
||||||
ROUND(SUM(d.cantitate * CASE WHEN d.pret_cu_tva = 1 THEN d.pret / (1 + d.proc_tvav/100) ELSE d.pret END), 2) AS vanzari,
|
ROUND(SUM(d.cantitate * ((CASE WHEN d.pret_cu_tva = 1 THEN round((ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) / d.proc_tvav, 4) ELSE (ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) END) - ROUND(NVL(c.curs, 1) * NVL(d.discount_unitar, 4) / NVL(c.multiplicator, 1), 4))), 2) AS vanzari,
|
||||||
ROUND(SUM(d.cantitate * (CASE WHEN d.pret_cu_tva = 1 THEN d.pret / (1 + d.proc_tvav/100) ELSE d.pret END - d.pret_achizitie)), 2) AS marja,
|
ROUND(SUM(d.cantitate * (((CASE WHEN d.pret_cu_tva = 1 THEN round((ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) / d.proc_tvav, 4) ELSE (ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) END) - ROUND(NVL(c.curs, 1) * NVL(d.discount_unitar, 4) / NVL(c.multiplicator, 1), 4)) - d.pret_achizitie)), 2) AS marja,
|
||||||
ROUND(
|
ROUND(
|
||||||
SUM(d.cantitate * (CASE WHEN d.pret_cu_tva = 1 THEN d.pret / (1 + d.proc_tvav/100) ELSE d.pret END - d.pret_achizitie)) * 100.0 /
|
SUM(d.cantitate * (((CASE WHEN d.pret_cu_tva = 1 THEN round((ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) / d.proc_tvav, 4) ELSE (ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) END) - ROUND(NVL(c.curs, 1) * NVL(d.discount_unitar, 4) / NVL(c.multiplicator, 1), 4)) - d.pret_achizitie)) * 100.0 /
|
||||||
NULLIF(SUM(d.cantitate * CASE WHEN d.pret_cu_tva = 1 THEN d.pret / (1 + d.proc_tvav/100) ELSE d.pret END), 0)
|
NULLIF(SUM(d.cantitate * ((CASE WHEN d.pret_cu_tva = 1 THEN round((ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) / d.proc_tvav, 4) ELSE (ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) END) - ROUND(NVL(c.curs, 1) * NVL(d.discount_unitar, 4) / NVL(c.multiplicator, 1), 4))), 0)
|
||||||
, 2) AS procent_marja,
|
, 2) AS procent_marja,
|
||||||
CASE
|
CASE
|
||||||
WHEN SUM(d.cantitate * (CASE WHEN d.pret_cu_tva = 1 THEN d.pret / (1 + d.proc_tvav/100) ELSE d.pret END - d.pret_achizitie)) < 0 THEN 'PIERDERE'
|
WHEN SUM(d.cantitate * (((CASE WHEN d.pret_cu_tva = 1 THEN round((ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) / d.proc_tvav, 4) ELSE (ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) END) - ROUND(NVL(c.curs, 1) * NVL(d.discount_unitar, 4) / NVL(c.multiplicator, 1), 4)) - d.pret_achizitie)) < 0 THEN 'PIERDERE'
|
||||||
WHEN SUM(d.cantitate * (CASE WHEN d.pret_cu_tva = 1 THEN d.pret / (1 + d.proc_tvav/100) ELSE d.pret END - d.pret_achizitie)) * 100.0 /
|
WHEN SUM(d.cantitate * (((CASE WHEN d.pret_cu_tva = 1 THEN round((ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) / d.proc_tvav, 4) ELSE (ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) END) - ROUND(NVL(c.curs, 1) * NVL(d.discount_unitar, 4) / NVL(c.multiplicator, 1), 4)) - d.pret_achizitie)) * 100.0 /
|
||||||
NULLIF(SUM(d.cantitate * CASE WHEN d.pret_cu_tva = 1 THEN d.pret / (1 + d.proc_tvav/100) ELSE d.pret END), 0) < 15 THEN 'MARJA MICA'
|
NULLIF(SUM(d.cantitate * ((CASE WHEN d.pret_cu_tva = 1 THEN round((ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) / d.proc_tvav, 4) ELSE (ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) END) - ROUND(NVL(c.curs, 1) * NVL(d.discount_unitar, 4) / NVL(c.multiplicator, 1), 4))), 0) < 15 THEN 'MARJA MICA'
|
||||||
ELSE 'OK'
|
ELSE 'OK'
|
||||||
END AS status_marja
|
END AS status_marja
|
||||||
FROM vanzari f
|
FROM vanzari f
|
||||||
JOIN vanzari_detalii d ON d.id_vanzare = f.id_vanzare AND d.sters = 0
|
JOIN vanzari_detalii d ON d.id_vanzare = f.id_vanzare AND d.sters = 0
|
||||||
|
LEFT JOIN VANZARI_CURSURI c ON d.id_vanzare = c.id_vanzare
|
||||||
|
AND d.id_valuta = c.id_valuta
|
||||||
LEFT JOIN nom_parteneri p ON f.id_part = p.id_part
|
LEFT JOIN nom_parteneri p ON f.id_part = p.id_part
|
||||||
LEFT JOIN nom_articole art ON d.id_articol = art.id_articol
|
LEFT JOIN nom_articole art ON d.id_articol = art.id_articol
|
||||||
LEFT JOIN vgest_art_sbgr sg ON art.id_subgrupa = sg.id_subgrupa
|
LEFT JOIN vgest_art_sbgr sg ON art.id_subgrupa = sg.id_subgrupa
|
||||||
@@ -1420,7 +1464,7 @@ WHERE f.sters = 0
|
|||||||
AND f.data_act >= ADD_MONTHS(:data_referinta, -:months)
|
AND f.data_act >= ADD_MONTHS(:data_referinta, -:months)
|
||||||
AND f.data_act < :data_referinta
|
AND f.data_act < :data_referinta
|
||||||
GROUP BY f.id_part, p.denumire, sg.id_grupa, sg.grupa
|
GROUP BY f.id_part, p.denumire, sg.id_grupa, sg.grupa
|
||||||
HAVING SUM(d.cantitate * CASE WHEN d.pret_cu_tva = 1 THEN d.pret / (1 + d.proc_tvav/100) ELSE d.pret END) > 1000
|
HAVING SUM(d.cantitate * ((CASE WHEN d.pret_cu_tva = 1 THEN round((ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) / d.proc_tvav, 4) ELSE (ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) END) - ROUND(NVL(c.curs, 1) * NVL(d.discount_unitar, 4) / NVL(c.multiplicator, 1), 4))) > 1000
|
||||||
ORDER BY p.denumire, vanzari DESC
|
ORDER BY p.denumire, vanzari DESC
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@@ -1432,9 +1476,11 @@ WITH preturi_vechi AS (
|
|||||||
SELECT /*+ LEADING(f d) USE_NL(d) INDEX(f IDX_VANZARI_NR) */
|
SELECT /*+ LEADING(f d) USE_NL(d) INDEX(f IDX_VANZARI_NR) */
|
||||||
d.id_articol,
|
d.id_articol,
|
||||||
a.denumire,
|
a.denumire,
|
||||||
AVG(CASE WHEN d.pret_cu_tva = 1 THEN d.pret / (1 + d.proc_tvav/100) ELSE d.pret END) AS pret_mediu_vechi
|
AVG(((CASE WHEN d.pret_cu_tva = 1 THEN round((ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) / d.proc_tvav, 4) ELSE (ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) END) - ROUND(NVL(c.curs, 1) * NVL(d.discount_unitar, 4) / NVL(c.multiplicator, 1), 4))) AS pret_mediu_vechi
|
||||||
FROM vanzari f
|
FROM vanzari f
|
||||||
JOIN vanzari_detalii d ON d.id_vanzare = f.id_vanzare AND d.sters = 0
|
JOIN vanzari_detalii d ON d.id_vanzare = f.id_vanzare AND d.sters = 0
|
||||||
|
LEFT JOIN VANZARI_CURSURI c ON d.id_vanzare = c.id_vanzare
|
||||||
|
AND d.id_valuta = c.id_valuta
|
||||||
LEFT JOIN nom_articole a ON d.id_articol = a.id_articol
|
LEFT JOIN nom_articole a ON d.id_articol = a.id_articol
|
||||||
WHERE f.sters = 0
|
WHERE f.sters = 0
|
||||||
AND f.tip > 0 AND f.tip NOT IN (7, 8, 9, 24)
|
AND f.tip > 0 AND f.tip NOT IN (7, 8, 9, 24)
|
||||||
@@ -1448,9 +1494,11 @@ WITH preturi_vechi AS (
|
|||||||
preturi_noi AS (
|
preturi_noi AS (
|
||||||
SELECT /*+ LEADING(f d) USE_NL(d) INDEX(f IDX_VANZARI_NR) */
|
SELECT /*+ LEADING(f d) USE_NL(d) INDEX(f IDX_VANZARI_NR) */
|
||||||
d.id_articol,
|
d.id_articol,
|
||||||
AVG(CASE WHEN d.pret_cu_tva = 1 THEN d.pret / (1 + d.proc_tvav/100) ELSE d.pret END) AS pret_mediu_nou
|
AVG(((CASE WHEN d.pret_cu_tva = 1 THEN round((ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) / d.proc_tvav, 4) ELSE (ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) END) - ROUND(NVL(c.curs, 1) * NVL(d.discount_unitar, 4) / NVL(c.multiplicator, 1), 4))) AS pret_mediu_nou
|
||||||
FROM vanzari f
|
FROM vanzari f
|
||||||
JOIN vanzari_detalii d ON d.id_vanzare = f.id_vanzare AND d.sters = 0
|
JOIN vanzari_detalii d ON d.id_vanzare = f.id_vanzare AND d.sters = 0
|
||||||
|
LEFT JOIN VANZARI_CURSURI c ON d.id_vanzare = c.id_vanzare
|
||||||
|
AND d.id_valuta = c.id_valuta
|
||||||
WHERE f.sters = 0
|
WHERE f.sters = 0
|
||||||
AND f.tip > 0 AND f.tip NOT IN (7, 8, 9, 24)
|
AND f.tip > 0 AND f.tip NOT IN (7, 8, 9, 24)
|
||||||
AND f.data_act >= ADD_MONTHS(:data_referinta, -6)
|
AND f.data_act >= ADD_MONTHS(:data_referinta, -6)
|
||||||
@@ -1508,10 +1556,12 @@ activ AS (
|
|||||||
-- Vanzari si profit din ultimele 12 luni
|
-- Vanzari si profit din ultimele 12 luni
|
||||||
vanzari_calc AS (
|
vanzari_calc AS (
|
||||||
SELECT /*+ LEADING(f d) USE_NL(d) INDEX(f IDX_VANZARI_NR) */
|
SELECT /*+ LEADING(f d) USE_NL(d) INDEX(f IDX_VANZARI_NR) */
|
||||||
SUM(d.cantitate * CASE WHEN d.pret_cu_tva = 1 THEN d.pret / (1 + d.proc_tvav/100) ELSE d.pret END) AS total_vanzari,
|
SUM(d.cantitate * ((CASE WHEN d.pret_cu_tva = 1 THEN round((ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) / d.proc_tvav, 4) ELSE (ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) END) - ROUND(NVL(c.curs, 1) * NVL(d.discount_unitar, 4) / NVL(c.multiplicator, 1), 4))) AS total_vanzari,
|
||||||
SUM(d.cantitate * (CASE WHEN d.pret_cu_tva = 1 THEN d.pret / (1 + d.proc_tvav/100) ELSE d.pret END - d.pret_achizitie)) AS profit_brut
|
SUM(d.cantitate * (((CASE WHEN d.pret_cu_tva = 1 THEN round((ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) / d.proc_tvav, 4) ELSE (ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) END) - ROUND(NVL(c.curs, 1) * NVL(d.discount_unitar, 4) / NVL(c.multiplicator, 1), 4)) - d.pret_achizitie)) AS profit_brut
|
||||||
FROM vanzari f
|
FROM vanzari f
|
||||||
JOIN vanzari_detalii d ON d.id_vanzare = f.id_vanzare AND d.sters = 0
|
JOIN vanzari_detalii d ON d.id_vanzare = f.id_vanzare AND d.sters = 0
|
||||||
|
LEFT JOIN VANZARI_CURSURI c ON d.id_vanzare = c.id_vanzare
|
||||||
|
AND d.id_valuta = c.id_valuta
|
||||||
WHERE f.sters = 0
|
WHERE f.sters = 0
|
||||||
AND f.tip > 0 AND f.tip NOT IN (7, 8, 9, 24)
|
AND f.tip > 0 AND f.tip NOT IN (7, 8, 9, 24)
|
||||||
AND f.data_act >= ADD_MONTHS(:data_referinta, -12)
|
AND f.data_act >= ADD_MONTHS(:data_referinta, -12)
|
||||||
@@ -2047,9 +2097,11 @@ WITH
|
|||||||
-- Metrici curente
|
-- Metrici curente
|
||||||
vanzari_curente AS (
|
vanzari_curente AS (
|
||||||
SELECT /*+ LEADING(f d) USE_NL(d) INDEX(f IDX_VANZARI_NR) */
|
SELECT /*+ LEADING(f d) USE_NL(d) INDEX(f IDX_VANZARI_NR) */
|
||||||
SUM(d.cantitate * CASE WHEN d.pret_cu_tva = 1 THEN d.pret / (1 + d.proc_tvav/100) ELSE d.pret END) AS total_vanzari
|
SUM(d.cantitate * ((CASE WHEN d.pret_cu_tva = 1 THEN round((ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) / d.proc_tvav, 4) ELSE (ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) END) - ROUND(NVL(c.curs, 1) * NVL(d.discount_unitar, 4) / NVL(c.multiplicator, 1), 4))) AS total_vanzari
|
||||||
FROM vanzari f
|
FROM vanzari f
|
||||||
JOIN vanzari_detalii d ON d.id_vanzare = f.id_vanzare AND d.sters = 0
|
JOIN vanzari_detalii d ON d.id_vanzare = f.id_vanzare AND d.sters = 0
|
||||||
|
LEFT JOIN VANZARI_CURSURI c ON d.id_vanzare = c.id_vanzare
|
||||||
|
AND d.id_valuta = c.id_valuta
|
||||||
WHERE f.sters = 0
|
WHERE f.sters = 0
|
||||||
AND f.tip > 0 AND f.tip NOT IN (7, 8, 9, 24)
|
AND f.tip > 0 AND f.tip NOT IN (7, 8, 9, 24)
|
||||||
AND f.data_act >= ADD_MONTHS(:data_referinta, -12)
|
AND f.data_act >= ADD_MONTHS(:data_referinta, -12)
|
||||||
@@ -2079,9 +2131,11 @@ sold_furnizori_curent AS (
|
|||||||
-- Metrici anterioare (aproximare - vanzari an anterior)
|
-- Metrici anterioare (aproximare - vanzari an anterior)
|
||||||
vanzari_anterioare AS (
|
vanzari_anterioare AS (
|
||||||
SELECT /*+ LEADING(f d) USE_NL(d) INDEX(f IDX_VANZARI_NR) */
|
SELECT /*+ LEADING(f d) USE_NL(d) INDEX(f IDX_VANZARI_NR) */
|
||||||
SUM(d.cantitate * CASE WHEN d.pret_cu_tva = 1 THEN d.pret / (1 + d.proc_tvav/100) ELSE d.pret END) AS total_vanzari
|
SUM(d.cantitate * ((CASE WHEN d.pret_cu_tva = 1 THEN round((ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) / d.proc_tvav, 4) ELSE (ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) END) - ROUND(NVL(c.curs, 1) * NVL(d.discount_unitar, 4) / NVL(c.multiplicator, 1), 4))) AS total_vanzari
|
||||||
FROM vanzari f
|
FROM vanzari f
|
||||||
JOIN vanzari_detalii d ON d.id_vanzare = f.id_vanzare AND d.sters = 0
|
JOIN vanzari_detalii d ON d.id_vanzare = f.id_vanzare AND d.sters = 0
|
||||||
|
LEFT JOIN VANZARI_CURSURI c ON d.id_vanzare = c.id_vanzare
|
||||||
|
AND d.id_valuta = c.id_valuta
|
||||||
WHERE f.sters = 0
|
WHERE f.sters = 0
|
||||||
AND f.tip > 0 AND f.tip NOT IN (7, 8, 9, 24)
|
AND f.tip > 0 AND f.tip NOT IN (7, 8, 9, 24)
|
||||||
AND f.data_act >= ADD_MONTHS(:data_referinta, -24)
|
AND f.data_act >= ADD_MONTHS(:data_referinta, -24)
|
||||||
@@ -2154,9 +2208,11 @@ WITH
|
|||||||
vanzari_curent AS (
|
vanzari_curent AS (
|
||||||
SELECT /*+ LEADING(f d) USE_NL(d) INDEX(f IDX_VANZARI_NR) */
|
SELECT /*+ LEADING(f d) USE_NL(d) INDEX(f IDX_VANZARI_NR) */
|
||||||
f.id_part,
|
f.id_part,
|
||||||
SUM(d.cantitate * CASE WHEN d.pret_cu_tva = 1 THEN d.pret / (1 + d.proc_tvav/100) ELSE d.pret END) AS vanzari
|
SUM(d.cantitate * ((CASE WHEN d.pret_cu_tva = 1 THEN round((ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) / d.proc_tvav, 4) ELSE (ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) END) - ROUND(NVL(c.curs, 1) * NVL(d.discount_unitar, 4) / NVL(c.multiplicator, 1), 4))) AS vanzari
|
||||||
FROM vanzari f
|
FROM vanzari f
|
||||||
JOIN vanzari_detalii d ON d.id_vanzare = f.id_vanzare AND d.sters = 0
|
JOIN vanzari_detalii d ON d.id_vanzare = f.id_vanzare AND d.sters = 0
|
||||||
|
LEFT JOIN VANZARI_CURSURI c ON d.id_vanzare = c.id_vanzare
|
||||||
|
AND d.id_valuta = c.id_valuta
|
||||||
WHERE f.sters = 0
|
WHERE f.sters = 0
|
||||||
AND f.tip > 0 AND f.tip NOT IN (7, 8, 9, 24)
|
AND f.tip > 0 AND f.tip NOT IN (7, 8, 9, 24)
|
||||||
AND f.data_act >= ADD_MONTHS(:data_referinta, -12)
|
AND f.data_act >= ADD_MONTHS(:data_referinta, -12)
|
||||||
@@ -2179,9 +2235,11 @@ metrics_curent AS (
|
|||||||
vanzari_anterior AS (
|
vanzari_anterior AS (
|
||||||
SELECT /*+ LEADING(f d) USE_NL(d) INDEX(f IDX_VANZARI_NR) */
|
SELECT /*+ LEADING(f d) USE_NL(d) INDEX(f IDX_VANZARI_NR) */
|
||||||
f.id_part,
|
f.id_part,
|
||||||
SUM(d.cantitate * CASE WHEN d.pret_cu_tva = 1 THEN d.pret / (1 + d.proc_tvav/100) ELSE d.pret END) AS vanzari
|
SUM(d.cantitate * ((CASE WHEN d.pret_cu_tva = 1 THEN round((ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) / d.proc_tvav, 4) ELSE (ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) END) - ROUND(NVL(c.curs, 1) * NVL(d.discount_unitar, 4) / NVL(c.multiplicator, 1), 4))) AS vanzari
|
||||||
FROM vanzari f
|
FROM vanzari f
|
||||||
JOIN vanzari_detalii d ON d.id_vanzare = f.id_vanzare AND d.sters = 0
|
JOIN vanzari_detalii d ON d.id_vanzare = f.id_vanzare AND d.sters = 0
|
||||||
|
LEFT JOIN VANZARI_CURSURI c ON d.id_vanzare = c.id_vanzare
|
||||||
|
AND d.id_valuta = c.id_valuta
|
||||||
WHERE f.sters = 0
|
WHERE f.sters = 0
|
||||||
AND f.tip > 0 AND f.tip NOT IN (7, 8, 9, 24)
|
AND f.tip > 0 AND f.tip NOT IN (7, 8, 9, 24)
|
||||||
AND f.data_act >= ADD_MONTHS(:data_referinta, -24)
|
AND f.data_act >= ADD_MONTHS(:data_referinta, -24)
|
||||||
@@ -2277,10 +2335,12 @@ WITH base_data AS (
|
|||||||
ELSE 'Marfa revanduta'
|
ELSE 'Marfa revanduta'
|
||||||
END AS linie_business,
|
END AS linie_business,
|
||||||
CASE WHEN f.data_act >= ADD_MONTHS(:data_referinta, -12) THEN 'CURENT' ELSE 'ANTERIOR' END AS perioada,
|
CASE WHEN f.data_act >= ADD_MONTHS(:data_referinta, -12) THEN 'CURENT' ELSE 'ANTERIOR' END AS perioada,
|
||||||
d.cantitate * CASE WHEN d.pret_cu_tva = 1 THEN d.pret / (1 + d.proc_tvav/100) ELSE d.pret END AS vanzare,
|
d.cantitate * ((CASE WHEN d.pret_cu_tva = 1 THEN round((ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) / d.proc_tvav, 4) ELSE (ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) END) - ROUND(NVL(c.curs, 1) * NVL(d.discount_unitar, 4) / NVL(c.multiplicator, 1), 4)) AS vanzare,
|
||||||
d.cantitate * (CASE WHEN d.pret_cu_tva = 1 THEN d.pret / (1 + d.proc_tvav/100) ELSE d.pret END - d.pret_achizitie) AS marja
|
d.cantitate * (((CASE WHEN d.pret_cu_tva = 1 THEN round((ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) / d.proc_tvav, 4) ELSE (ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) END) - ROUND(NVL(c.curs, 1) * NVL(d.discount_unitar, 4) / NVL(c.multiplicator, 1), 4)) - d.pret_achizitie) AS marja
|
||||||
FROM VANZARI f
|
FROM VANZARI f
|
||||||
JOIN VANZARI_DETALII d ON d.id_vanzare = f.id_vanzare
|
JOIN VANZARI_DETALII d ON d.id_vanzare = f.id_vanzare
|
||||||
|
LEFT JOIN VANZARI_CURSURI c ON d.id_vanzare = c.id_vanzare
|
||||||
|
AND d.id_valuta = c.id_valuta
|
||||||
WHERE f.sters = 0 AND d.sters = 0
|
WHERE f.sters = 0 AND d.sters = 0
|
||||||
AND f.tip > 0 AND f.tip NOT IN (7, 8, 9, 24)
|
AND f.tip > 0 AND f.tip NOT IN (7, 8, 9, 24)
|
||||||
AND f.data_act >= ADD_MONTHS(:data_referinta, -24)
|
AND f.data_act >= ADD_MONTHS(:data_referinta, -24)
|
||||||
|
|||||||
Reference in New Issue
Block a user