# models.py

from django.db import models

# class CustomerMaster(models.Model):
#     Id = models.AutoField(primary_key=True)  # Auto-incrementing primary key
#     NickName = models.CharField(max_length=255, null=True, blank=True)  # Nickname of the customer
#     Type = models.CharField(max_length=50, null=True, blank=True)  # Type of customer
#     IndirectRefId = models.IntegerField(null=True, blank=True)
#     CustomerName = models.CharField(max_length=100)  # Customer's full name
#     Email = models.CharField(max_length=500, null=True, blank=True)  # Email address
#     PhoneNumber = models.CharField(max_length=500, null=True, blank=True)  # Phone number
#     Address1 = models.CharField(max_length=255, null=True, blank=True)  # Primary address line
#     Address2 = models.CharField(max_length=255, null=True, blank=True)  # Secondary address line
#     City = models.CharField(max_length=50, null=True, blank=True)  # City
#     State = models.CharField(max_length=50, null=True, blank=True)  # State
#     Country = models.CharField(max_length=50, null=True, blank=True)  # Country
#     PostalCode = models.CharField(max_length=20, null=True, blank=True)  # Postal code
#     CreatedBy = models.IntegerField()  # User who created the record
#     CreatedDate = models.DateTimeField(auto_now_add=True)  # Timestamp for record creation
#     UpdatedBy = models.IntegerField(null=True, blank=True)  # User who last updated the record
#     UpdatedDate = models.DateTimeField(null=True, blank=True)  # Timestamp for the last update
#     IsDeleted = models.BooleanField(default=False)  # Soft delete flag

#     class Meta:
#         db_table = 'CustomerMaster'  # The table name in the database
#         managed = False  # If set to False, Django will not create or modify the table

#     def __str__(self):
#         return self.NickName


class AddressMaster(models.Model):
    Id = models.AutoField(primary_key=True)
    CustomerMasterId = models.IntegerField(null=True, blank=True)
    CustomerNickName = models.CharField(max_length=255 )
    CustomerName = models.CharField(max_length=100)
    Type = models.CharField(max_length=50, null=True, blank=True)
    AddressLine1 = models.CharField(max_length=255)
    AddressLine2 = models.CharField(max_length=255, null=True, blank=True)
    AddressLine3 = models.CharField(max_length=255, null=True, blank=True)
    City = models.CharField(max_length=50, null=True, blank=True)
    CityMapping = models.CharField(max_length=500, null=True, blank=True)
    State = models.CharField(max_length=50, null=True, blank=True)
    Country = models.CharField(max_length=50, null=True, blank=True)
    PostalCode = models.CharField(max_length=20, null=True, blank=True)
    PreferredDeliveryTime = models.TimeField(db_column="PreferredDeliveryTime", null=True, blank=True)
    PreferredDeliveryTimeInterval = models.CharField(max_length=20, db_column="PreferredDeliveryTimeInterval", null=True, blank=True)
    DebtorCode = models.CharField(max_length=50, null=True, blank=True)
    StateCode = models.CharField(max_length=50, null=True, blank=True)
    CountryCode = models.CharField(max_length=50, null=True, blank=True)
    ContactPerson = models.CharField(max_length=250, null=True, blank=True)
    JobDescription = models.CharField(max_length=500, null=True, blank=True)
    Phone = models.CharField(max_length=250, null=True, blank=True)
    Fax = models.CharField(max_length=250, null=True, blank=True)
    Email = models.CharField(max_length=250, null=True, blank=True)
    ExactERPAddressId = models.IntegerField(null=True, unique=True)
    ParentShipTo = models.IntegerField(null=True, blank=True)
    CreatedBy = models.IntegerField(default=27)
    CreatedDate = models.DateTimeField(auto_now_add=True)
    UpdatedBy = models.IntegerField(null=True, blank=True)
    UpdatedDate = models.DateTimeField(null=True, blank=True)
    IsDeleted = models.BooleanField(default=False)
    ArticleCode = models.CharField(max_length=500, null=True, blank=True)
    HasOriginStatement = models.IntegerField(default=0)
    IsActive = models.IntegerField(null=True, default=1)

    class Meta:
        db_table = 'AddressMaster'
        managed = False

    def __str__(self):
        return f"{self.AddressLine1}, {self.City}, {self.Country}"


class AddressCodeRelationship(models.Model):
    # Define the fields in the model exactly as your table structure
    Id = models.AutoField(primary_key=True)  # AutoField automatically generates an auto-incrementing primary key
    ShipToCode = models.IntegerField(null=True, blank=True)  # ExactERPAddresssId from AddressMaster
    InvoiceToCode = models.IntegerField(null=True, blank=True)  # ExactERPAddresssId from AddressMaster
    OrderedByCode = models.IntegerField(null=True, blank=True)  # ExactERPAddresssId from AddressMaster
    ArticleCode = models.CharField(max_length=100, null=True, blank=True) 
    class Meta:
        # Specify the table name and schema in the database
        db_table = 'AddressCodeRelationship'