pasquale991 commited on
Commit
f2f9d9b
·
verified ·
1 Parent(s): 000859d

Update src/streamlit_app.py

Browse files
Files changed (1) hide show
  1. src/streamlit_app.py +10 -9
src/streamlit_app.py CHANGED
@@ -34,7 +34,7 @@ fixed_and_default_values = {
34
  # Definizione dettagliata del layout del file .dat.
35
  # 'excel_col': Il nome esatto della colonna nel file Excel di origine.
36
  # NOTA IMPORTANTE: i nomi delle colonne qui devono corrispondere ESATTAMENTE
37
- # a come appaiono nelle intestazioni dei tuoi file Excel.
38
  dat_format_spec = [
39
  # Id | Nome | Obbl | Tipo | Lungh | Inizio | Descrizione | Default | Campi
40
  {'id': '1', 'name': 'codice_identificativo_cliente', 'length': 12, 'numeric_pad_zero': False, 'decimals': 0, 'mandatory': True, 'source': 'fixed', 'excel_col': None, 'description': "Valore costante che identifica il cliente, viene comunicato al cliente al momento dell'attivazione del servizio, un esempio di codice è CLI 000000009", 'start_pos': 1},
@@ -124,9 +124,11 @@ def generate_poste_dat_file(df_shipping_mark_input, df_shipment_order_input):
124
  df_shipment_order['orderRef'] = df_shipment_order['orderRef'].astype(str).str.strip()
125
 
126
  # Esegue la join: cruciale 'how=inner' per una join "secca"
127
- # Utilizza suffissi per differenziare le colonne con lo stesso nome provenienti dai due DataFrame
128
- # I nomi delle colonne nel DataFrame fuso saranno ad es. 'orderRef_sm', 'shippingMark_sm', 'consegnee.partner.name_so'
129
- df_merged = pd.merge(df_shipping_mark, df_shipment_order, on='orderRef', how='inner', suffixes=('_sm', '_so'))
 
 
130
 
131
  if df_merged.empty:
132
  st.warning("Nessun record corrispondente trovato dopo la join. Assicurati che 'orderRef' sia presente e corrisponda in entrambi i file.")
@@ -149,9 +151,8 @@ def generate_poste_dat_file(df_shipping_mark_input, df_shipment_order_input):
149
  if source_type == 'fixed':
150
  value_to_format = fixed_and_default_values.get(field_name, '')
151
  elif source_type == 'shipping_mark_file':
152
- # Accede alle colonne di shipping_mark utilizzando il suffisso '_sm' dopo la join
153
- # e il nome della colonna come specificato nel dat_format_spec
154
- col_key = f"{excel_col_name}_sm"
155
  if col_key in row: # Verifica se la colonna esiste nel row (DataFrame fuso)
156
  value_to_format = row.get(col_key)
157
  else:
@@ -188,8 +189,8 @@ def generate_poste_dat_file(df_shipping_mark_input, df_shipment_order_input):
188
  else: # Se NaN o vuoto, usa stringa vuota
189
  value_to_format = ''
190
  elif source_type == 'shipment_order_file':
191
- # Accede alle colonne di shipment_order utilizzando il suffisso '_so' dopo la join.
192
- col_key = f"{excel_col_name}_so"
193
  if col_key in row: # Verifica se la colonna esiste nel row (DataFrame fuso)
194
  value_to_format = row.get(col_key)
195
  else:
 
34
  # Definizione dettagliata del layout del file .dat.
35
  # 'excel_col': Il nome esatto della colonna nel file Excel di origine.
36
  # NOTA IMPORTANTE: i nomi delle colonne qui devono corrispondere ESATTAMENTE
37
+ # a come appaiono nelle intestazioni dei tuoi file Excel, inclusa la capitalizzazione.
38
  dat_format_spec = [
39
  # Id | Nome | Obbl | Tipo | Lungh | Inizio | Descrizione | Default | Campi
40
  {'id': '1', 'name': 'codice_identificativo_cliente', 'length': 12, 'numeric_pad_zero': False, 'decimals': 0, 'mandatory': True, 'source': 'fixed', 'excel_col': None, 'description': "Valore costante che identifica il cliente, viene comunicato al cliente al momento dell'attivazione del servizio, un esempio di codice è CLI 000000009", 'start_pos': 1},
 
124
  df_shipment_order['orderRef'] = df_shipment_order['orderRef'].astype(str).str.strip()
125
 
126
  # Esegue la join: cruciale 'how=inner' per una join "secca"
127
+ # Quando 'on' è specificato, la colonna di merge (orderRef) non viene suffissa.
128
+ # Le altre colonne, se non hanno nomi duplicati tra i due DF, non vengono suffisse.
129
+ # Poiché i nomi delle colonne di ShipmentOrder sono nidificati (.name, .address.address),
130
+ # non ci dovrebbero essere duplicati a parte 'orderRef', quindi non vengono suffisse.
131
+ df_merged = pd.merge(df_shipping_mark, df_shipment_order, on='orderRef', how='inner')
132
 
133
  if df_merged.empty:
134
  st.warning("Nessun record corrispondente trovato dopo la join. Assicurati che 'orderRef' sia presente e corrisponda in entrambi i file.")
 
151
  if source_type == 'fixed':
152
  value_to_format = fixed_and_default_values.get(field_name, '')
153
  elif source_type == 'shipping_mark_file':
154
+ # Accede alle colonne di shipping_mark direttamente con il loro nome originale
155
+ col_key = excel_col_name
 
156
  if col_key in row: # Verifica se la colonna esiste nel row (DataFrame fuso)
157
  value_to_format = row.get(col_key)
158
  else:
 
189
  else: # Se NaN o vuoto, usa stringa vuota
190
  value_to_format = ''
191
  elif source_type == 'shipment_order_file':
192
+ # Accede alle colonne di shipment_order direttamente con il loro nome originale
193
+ col_key = excel_col_name
194
  if col_key in row: # Verifica se la colonna esiste nel row (DataFrame fuso)
195
  value_to_format = row.get(col_key)
196
  else: