Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
oyaji / oyaji / suppliers / models.py
Size: Mime:
# -*- coding: utf-8 -*-
# Python
# Python
from datetime import datetime

# Third
from bson.objectid import ObjectId
from mongoengine import (
    BooleanField,
    DateTimeField,
    EmbeddedDocument,
    EmbeddedDocumentField,
    FloatField,
    IntField,
    ObjectIdField,
    StringField,
)

# Apps
from oyaji.address.models import Address
from oyaji.banks.models import BankAccount
from oyaji.users.models import UserAbstract
from oyaji.cities.models import City


class BusinessSegment(EmbeddedDocument):
    is_tourism = BooleanField(default=False)
    is_trade = BooleanField(default=False)
    is_events = BooleanField(default=False)
    is_transport = BooleanField(default=False)
    is_medical = BooleanField(default=False)


class Registration(EmbeddedDocument):
    sent_activate_email = BooleanField(default=False)
    accepted_terms = BooleanField(default=False)
    activate_account = BooleanField(default=False)
    approved = BooleanField(default=False)
    changed_password = BooleanField(default=False)
    filled_register_fields = BooleanField(default=False)
    updated_bank_account = BooleanField(default=False)
    completed = BooleanField(default=False)


class Iugu(EmbeddedDocument):
    customer_id = StringField(default="")
    plan_id = StringField(default="")
    active = BooleanField(default=False)
    subscription_id = StringField(default="")


class SupplierAbstract(UserAbstract):
    """
    Model to represents the supplier
    """

    meta = {"abstract": True, "collection": "suppliers"}

    company_name = StringField(default="")
    trade_name = StringField(required=True)
    slug = StringField(required=True, unique=True)
    cnpj = StringField(required=True)
    cnae = StringField(default="")
    since_date = DateTimeField(default=datetime.now)
    phone = StringField(default="")
    bank = EmbeddedDocumentField(BankAccount, default=BankAccount)
    address = EmbeddedDocumentField(Address, default=Address)
    registration = EmbeddedDocumentField(Registration, default=Registration)
    business = EmbeddedDocumentField(BusinessSegment, default=BusinessSegment)

    iugu = EmbeddedDocumentField(Iugu, default=Iugu)
    city = EmbeddedDocumentField(City, default=City)


class Variant(EmbeddedDocument):
    key = ObjectIdField(default=ObjectId, unique=True)
    name = StringField(default="DEFAULT")
    price = IntField(default=0)
    quantity = IntField(default=0)


class Split(EmbeddedDocument):
    apps = FloatField(required=True, default=0)
    gateway = FloatField(required=True, default=0)
    shipping = FloatField(required=True, default=0)
    seller = FloatField(required=True, default=0)