Raport stocuri marfa 371 pe vechimi (dosar credit banca)
Sectiune dedicata pentru banca cu sumar pe grupe x bucket vechime (0-6 luni, 6-12 luni, 1-2 ani, 2-3 ani, >3 ani), detaliu articole si reconciliere contra sold contabil 371 din balanta (vbal). - queries.py: STOCURI_371_SUMAR (ROLLUP grupa/subgrupa), STOCURI_371_DETALIU, STOCURI_371_SOLD_CONTABIL (sold sintetic din vbal, an/luna snapshot). Filtru stoc (cants+cant-cante) <> 0 pentru acoperire cu soldul contabil. - main.py: CLI --aging-dates pentru evolutie multi-data a stocului >3 ani, pagina PDF dedicata cu nota metodologica + reconciliere (marker la diff >1%). - recommendations.py: alerta CONCENTRARE cand stoc 371 >3 ani depaseste prag. - config.py: threshold aged_stock_371_pct (default 15%). - run.bat: header documentar cu argumentele disponibile + exemple. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -297,7 +297,26 @@ class RecommendationsEngine:
|
||||
vezi_detalii='Sheet: Rotatie Stocuri'
|
||||
)
|
||||
|
||||
# 3. Check cash conversion cycle
|
||||
# 3. Check aged stock 371 (bank collateral haircut risk)
|
||||
stocuri_371 = results.get('stocuri_371_detaliu')
|
||||
if stocuri_371 is not None and not stocuri_371.empty and 'VALOARE' in stocuri_371.columns:
|
||||
valoare_total = stocuri_371['VALOARE'].sum()
|
||||
if valoare_total > 0 and 'BUCKET_VECHIME' in stocuri_371.columns:
|
||||
peste_3 = stocuri_371[stocuri_371['BUCKET_VECHIME'] == '>3 ani']['VALOARE'].sum()
|
||||
procent = peste_3 / valoare_total
|
||||
prag = self.thresholds.get('aged_stock_371_pct', 0.15)
|
||||
if procent > prag:
|
||||
self._add_recommendation(
|
||||
categorie='Stoc 371',
|
||||
indicator='Marfa invechita cont 371',
|
||||
valoare=f'{procent*100:.1f}%',
|
||||
status='CONCENTRARE',
|
||||
explicatie=f'{procent*100:.1f}% din valoarea stocului 371 are >3 ani ({peste_3:,.0f} RON). Banca aplica haircut la evaluare colateral.',
|
||||
recomandare='Lichidare / provizionare recomandata inainte de depunere dosar credit.',
|
||||
vezi_detalii='Sheet: stocuri_371_detaliu'
|
||||
)
|
||||
|
||||
# 4. Check cash conversion cycle
|
||||
ciclu = results.get('ciclu_conversie_cash')
|
||||
if ciclu is not None and not ciclu.empty:
|
||||
dio_row = ciclu[ciclu['INDICATOR'].str.contains('stoc|DIO', case=False, na=False)]
|
||||
|
||||
Reference in New Issue
Block a user