diff --git a/backend/api/v1/modules/a76/layouts_csv/exportacion/tasks.py b/backend/api/v1/modules/a76/layouts_csv/exportacion/tasks.py index a2b61da2..2895bf40 100644 --- a/backend/api/v1/modules/a76/layouts_csv/exportacion/tasks.py +++ b/backend/api/v1/modules/a76/layouts_csv/exportacion/tasks.py @@ -44,15 +44,15 @@ def scan_file(self, job_id: str, model_target: str, config: str = None): if model_target == "invoice_header": from api.v1.modules.a76.layouts_csv.facturas.tasks import _do_scan_file - return _do_scan_file(job_id, "invoice_header", config, job_type_override="exp") + return _do_scan_file(self, job_id, "invoice_header", config, job_type_override="exp") if model_target == "invoice_details": from api.v1.modules.a76.layouts_csv.facturas.tasks import _do_scan_file - return _do_scan_file(job_id, "invoice_details", config, job_type_override="exp") + return _do_scan_file(self, job_id, "invoice_details", config, job_type_override="exp") if model_target == "invoice_series": from api.v1.modules.a76.layouts_csv.facturas.tasks import _do_scan_file - return _do_scan_file(job_id, "invoice_series", config, job_type_override="exp") + return _do_scan_file(self, job_id, "invoice_series", config, job_type_override="exp") # Fallback (e.g. unknown model_target) file_path = _ensure_file(job_id) diff --git a/backend/api/v1/modules/a76/layouts_csv/facturas/tasks.py b/backend/api/v1/modules/a76/layouts_csv/facturas/tasks.py index 54095fdf..03a1751c 100644 --- a/backend/api/v1/modules/a76/layouts_csv/facturas/tasks.py +++ b/backend/api/v1/modules/a76/layouts_csv/facturas/tasks.py @@ -185,10 +185,10 @@ def _validate_customs_broker_ref( @celery_app.task(bind=True) def scan_file(self, job_id: str, model_target: str, config: str = None, job_type_override: Optional[str] = None): """Pass 1: Read CSV, Validate types, Write Errors to JSONL. Delegates to _do_scan_file.""" - return _do_scan_file(job_id, model_target, config, job_type_override) + return _do_scan_file(self, job_id, model_target, config, job_type_override) -def _do_scan_file(job_id: str, model_target: str, config: Optional[str] = None, job_type_override: Optional[str] = None) -> Dict[str, Any]: +def _do_scan_file(self, job_id: str, model_target: str, config: Optional[str] = None, job_type_override: Optional[str] = None) -> Dict[str, Any]: """Pass 1 body: load file/meta from storage, run validations, store error lines. Uses effective_job_type for storage.""" effective_job_type = job_type_override if job_type_override is not None else JOB_TYPE log_prefix = "Exportación import" if effective_job_type else "Invoices import" @@ -4487,6 +4487,7 @@ def _do_insert_valid_rows(job_id: str, model_target: str, job_type_override: Opt InvoiceFinancials, InvoiceLogistics, InvoiceSalesDetails, + InvoiceStatus, OperationType, TransportType, WeightUnit, @@ -4925,7 +4926,10 @@ def _do_insert_valid_rows(job_id: str, model_target: str, job_type_override: Opt header = existing_header header.invoice_date = invoice_date header.operation_type = op_type_value - header.status = True # Mark as updated + # CSV import only captures data; "processed" is set by the manual/import processing flow. + # Legacy CSV imports may have persisted booleans ('True'/'False') into status. + if header.status not in (InvoiceStatus.PENDING, InvoiceStatus.PROCESSED, InvoiceStatus.REVERSED): + header.status = InvoiceStatus.PENDING header.updated_date = datetime.utcnow() capture_user = meta.get("capture_user") or "CSV" header.who_processed = capture_user @@ -4964,7 +4968,7 @@ def _do_insert_valid_rows(job_id: str, model_target: str, job_type_override: Opt invoice_number=invoice_number, invoice_date=invoice_date, operation_type=op_type_value, - status=False, + status=InvoiceStatus.PENDING, system="CSV", capture_date=datetime.utcnow(), capture_user=capture_user,