CORRECCIÓN: Changed dangerous CASCADE deletions to PROTECT on critical FKs
This commit is contained in:
@@ -75,8 +75,8 @@ class PurchaseRequisition(models.Model):
|
||||
Inicia el flujo de abastecimiento y aprobación técnica/financiera.
|
||||
"""
|
||||
code = models.CharField(max_length=50, unique=True, verbose_name="Código Requisición", default="REQ-2026-0001")
|
||||
requester = models.ForeignKey(User, on_delete=models.CASCADE, related_name='purchase_requisitions', verbose_name="Solicitante")
|
||||
project = models.ForeignKey(Project, on_delete=models.CASCADE, related_name='purchase_requisitions', verbose_name="Proyecto / Centro de Costo")
|
||||
requester = models.ForeignKey(User, on_delete=models.PROTECT, related_name='purchase_requisitions', verbose_name="Solicitante")
|
||||
project = models.ForeignKey(Project, on_delete=models.PROTECT, related_name='purchase_requisitions', verbose_name="Proyecto / Centro de Costo")
|
||||
|
||||
purpose = models.TextField(verbose_name="Justificación Técnica y Destino I+D+i")
|
||||
priority = models.CharField(max_length=30, choices=RequisitionPriorityEnum.choices, default=RequisitionPriorityEnum.MEDIA, verbose_name="Prioridad")
|
||||
@@ -130,9 +130,9 @@ class PurchaseOrder(models.Model):
|
||||
"""
|
||||
code = models.CharField(max_length=50, unique=True, verbose_name="Correlativo OC", default="OC-2026-0001")
|
||||
requisition = models.ForeignKey(PurchaseRequisition, on_delete=models.SET_NULL, null=True, blank=True, related_name='purchase_orders', verbose_name="Requisición de Origen")
|
||||
vendor = models.ForeignKey(Vendor, on_delete=models.CASCADE, related_name='purchase_orders', verbose_name="Proveedor")
|
||||
project = models.ForeignKey(Project, on_delete=models.CASCADE, related_name='purchase_orders', verbose_name="Proyecto")
|
||||
issuer = models.ForeignKey(User, on_delete=models.CASCADE, related_name='issued_purchase_orders', verbose_name="Emitido por")
|
||||
vendor = models.ForeignKey(Vendor, on_delete=models.PROTECT, related_name='purchase_orders', verbose_name="Proveedor")
|
||||
project = models.ForeignKey(Project, on_delete=models.PROTECT, related_name='purchase_orders', verbose_name="Proyecto")
|
||||
issuer = models.ForeignKey(User, on_delete=models.PROTECT, related_name='issued_purchase_orders', verbose_name="Emitido por")
|
||||
|
||||
issue_date = models.DateField(verbose_name="Fecha de Emisión")
|
||||
expected_delivery_date = models.DateField(null=True, blank=True, verbose_name="Fecha Estimada de Entrega")
|
||||
@@ -191,10 +191,10 @@ class GoodsReceipt(models.Model):
|
||||
Recepción Conforme en Bodega o Terreno.
|
||||
"""
|
||||
code = models.CharField(max_length=50, unique=True, verbose_name="N° Acta Recepción", default="REC-2026-0001")
|
||||
purchase_order = models.ForeignKey(PurchaseOrder, on_delete=models.CASCADE, related_name='receipts', verbose_name="Orden de Compra")
|
||||
purchase_order = models.ForeignKey(PurchaseOrder, on_delete=models.PROTECT, related_name='receipts', verbose_name="Orden de Compra")
|
||||
dispatch_guide_number = models.CharField(max_length=50, verbose_name="N° Guía de Despacho / Acta Terreno")
|
||||
receipt_date = models.DateField(verbose_name="Fecha de Recepción")
|
||||
received_by = models.ForeignKey(User, on_delete=models.CASCADE, related_name='received_deliveries', verbose_name="Receptor Conforme")
|
||||
received_by = models.ForeignKey(User, on_delete=models.PROTECT, related_name='received_deliveries', verbose_name="Receptor Conforme")
|
||||
|
||||
technical_conformity = models.BooleanField(default=True, verbose_name="Conformidad Técnica Aprobada")
|
||||
notes = models.TextField(blank=True, verbose_name="Observaciones de Entrega / Inspección")
|
||||
@@ -217,7 +217,7 @@ class ThreeWayMatch(models.Model):
|
||||
2. Recepción Física (Guía de Despacho / Acta de Conformidad)
|
||||
3. Factura Electrónica SII (DTE 33)
|
||||
"""
|
||||
purchase_order = models.OneToOneField(PurchaseOrder, on_delete=models.CASCADE, related_name='three_way_match', verbose_name="Orden de Compra")
|
||||
purchase_order = models.OneToOneField(PurchaseOrder, on_delete=models.PROTECT, related_name='three_way_match', verbose_name="Orden de Compra")
|
||||
goods_receipt = models.ForeignKey(GoodsReceipt, on_delete=models.SET_NULL, null=True, blank=True, related_name='matches', verbose_name="Recepción Conforme")
|
||||
|
||||
# Datos Factura Electrónica SII DTE 33
|
||||
|
||||
Reference in New Issue
Block a user