fix: ajustes parametros tecma

This commit is contained in:
Ernesto Herrera
2026-05-22 12:43:21 -06:00
parent 1afe23182f
commit a65f34d852

View File

@@ -1944,7 +1944,7 @@
" if not resumen.empty: resumen.to_excel(w, sheet_name='Resumen', index=False)\n",
"\n",
"\n",
"def ejecutar_valores(plan, dry_run=True, progress=None, log=print):\n",
"def ejecutar_valores(plan, dry_run=True, aplicar_vtmn=True, aplicar_mptemp=False, progress=None, log=print):\n",
" \"\"\"Paso B: UPDATE SPartidasExpo por cada partida del plan, usando 3-part\n",
" naming si la fila trae BaseDeDatos/Esquema (cuando se uso shelter).\n",
" Transaccion por (pedimento, BD) rollback si alguna partida falla.\"\"\"\n",
@@ -1968,14 +1968,21 @@
" target = f'[{db}].[{esq}].SPartidasExpo'\n",
" else:\n",
" target = 'SPartidasExpo'\n",
" upd_sql = f\"UPDATE {target} SET VALORTOTALME = ?, VALORTOTALMN = ? WHERE FACTURAEXPO = ? AND LINEA = ?\"\n",
" sets, params_tmpl = ['VALORTOTALME = ?'], ['ME']\n",
" if aplicar_vtmn:\n",
" sets.append('VALORTOTALMN = ?'); params_tmpl.append('MN')\n",
" if aplicar_mptemp:\n",
" sets.append('ValorMPTempMN = ?'); params_tmpl.append('MN')\n",
" upd_sql = f\"UPDATE {target} SET {', '.join(sets)} WHERE FACTURAEXPO = ? AND LINEA = ?\"\n",
" try:\n",
" with scaii_conn.cursor() as cur:\n",
" for _, p in fil.iterrows():\n",
" if not dry_run:\n",
" cur.execute(upd_sql,\n",
" float(p['NUEVO_ME']), float(p['NUEVO_MN']),\n",
" p['FACTURAEXPO'], int(p['LINEA']))\n",
" vals = []\n",
" for t in params_tmpl:\n",
" vals.append(float(p['NUEVO_ME']) if t == 'ME' else float(p['NUEVO_MN']))\n",
" vals.extend([p['FACTURAEXPO'], int(p['LINEA'])])\n",
" cur.execute(upd_sql, *vals)\n",
" upd += 1\n",
" if not dry_run: scaii_conn.commit()\n",
" except Exception as e:\n",
@@ -4577,6 +4584,8 @@
"btn_val_xlsx.on_click(_on_val_xlsx)\n",
"\n",
"dry_val = W.Checkbox(value=True, description='DRY_RUN (simular sin escribir)')\n",
"chk_val_vtmn = W.Checkbox(value=True, description='Aplicar a VALORTOTALMN', indent=False, layout={'width':'280px'})\n",
"chk_val_mptemp = W.Checkbox(value=False, description='Aplicar a ValorMPTempMN', indent=False, layout={'width':'280px'})\n",
"btn_val_ejecutar = W.Button(description='Ejecutar ajuste (Paso B)', button_style='warning', icon='play', layout={'width':'280px'})\n",
"bar_val_b = _mkbar('Ejecucion Valores')\n",
"out_val_ejec = W.Output(layout=OUT_STYLE)\n",
@@ -4588,7 +4597,10 @@
" if 'val_plan' not in _state:\n",
" print('ERROR: corre primero Analizar.'); return\n",
" print(f'(DB actual: {DB_ACTUAL})')\n",
" ejecutar_valores(_state['val_plan'], dry_run=dry_val.value, log=print, progress=bar_val_b)\n",
" ejecutar_valores(_state['val_plan'], dry_run=dry_val.value,\n",
" aplicar_vtmn=bool(chk_val_vtmn.value),\n",
" aplicar_mptemp=bool(chk_val_mptemp.value),\n",
" log=print, progress=bar_val_b)\n",
"btn_val_ejecutar.on_click(_on_val_ejecutar)\n",
"\n",
"tab_valores = W.VBox([\n",
@@ -4610,6 +4622,8 @@
" '<p style=\"color:#555;margin:0 0 8px 0;\">UPDATE VALORTOTALME y VALORTOTALMN por (FACTURAEXPO, LINEA). '\n",
" '<b>Corre primero con DRY_RUN activado.</b></p>'),\n",
" W.HBox([dry_val]),\n",
" W.HTML('<small style=\"color:#555;\">Columnas MN a actualizar:</small>'),\n",
" W.HBox([chk_val_vtmn, chk_val_mptemp]),\n",
" btn_val_ejecutar, bar_val_b,\n",
" out_val_ejec,\n",
"])\n",