# This file is part of Tryton.  The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.

from trytond.pool import Pool

from . import (
    purchase,
    sale,
    global_reporting,
    stock,
    derivative,
    lot,
    pricing,
    workflow,
    lc,
    dashboard,
    fee,
    payment_term,
    purchase_prepayment,
    cron,
    party,
    forex,
    outgoing,
    incoming,
    optional,
    association_tables,
    document_tracking,
    open_position,
    credit_risk,
    valuation,
    weight_report,
    service,
)

def register():
    Pool.register(
        association_tables.LCDocumentTypeProductProfile,
        association_tables.LCLetterDocumentType,
        association_tables.LCTemplateCountry,
        association_tables.LCTemplateProduct,
        association_tables.LCDocType,
        association_tables.LCTemplate,
        association_tables.ContractDocumentType,
        document_tracking.LCDocumentReceived,
        document_tracking.LCDocumentPrepared,
        document_tracking.LCDiscrepancy,
        incoming.LCIncoming,
        outgoing.LCOutgoing,
        incoming.ImportSwiftStart,
        incoming.ImportSwift,
        lc.LCMT700,
        lc.LCMessage,
        lc.CreateLCStart,
        global_reporting.GRConfiguration,
        module='purchase_trade', type_='model')
    Pool.register(
        incoming.ImportSwift,
        incoming.PrepareDocuments,
        incoming.AnalyzeConditions,
        lc.CreateLCWizard,
        module='purchase_trade', type_='wizard'
    )
    Pool.register(
        credit_risk.Party,
        credit_risk.CreditRiskRule,
        credit_risk.PartyInternalLimit,
        credit_risk.PartyInsuranceLimit,
        credit_risk.PartyPaymentCondition,
        credit_risk.PartyAcceptableCurrency,
        dashboard.Dashboard,
        dashboard.DashboardContext,
        dashboard.Incoming,
        dashboard.BotAction,
        dashboard.News,
        dashboard.Demos,
        party.Party,
        party.PartyExecution,
        payment_term.PaymentTerm,
        payment_term.PaymentTermLine,
        purchase.Purchase,
        purchase.Line,
        purchase.Estimated,
        purchase.Component,
        purchase.Pricing,
        purchase.Summary,
        purchase.StockLocation,
        purchase_prepayment.CreatePrepaymentStart,
        purchase_prepayment.PrepaymentMessage,
        purchase.Currency,
        purchase.Unit,
        purchase.PurchaseInvoiceReport,
        purchase.PurchaseInvoiceContext,
        open_position.OpenPosition,
        open_position.OpenPositionReport,
        open_position.OpenPositionContext,
        optional.OptionalScenario,
        fee.Fee,
        fee.FeeLots,
        purchase.FeeLots,
        valuation.Valuation,
        valuation.ValuationLine, 
        valuation.ValuationDyn,
        valuation.ValuationReport,
        valuation.ValuationReportContext,
        derivative.Derivative,
        derivative.DerivativeMatch,
        derivative.MatchWizardStart,
        derivative.DerivativeReport,
        derivative.DerivativeReportContext,
        fee.FeeReport,
        fee.FeeContext,
        forex.ForexCoverPhysicalContract,
        forex.PForex,
        forex.ForexBI,
        purchase.PnlBI,
        stock.Move,
        stock.Location,
        stock.InvoiceLine,
        stock.ShipmentIn,
        stock.ShipmentWR,
        stock.ShipmentInternal,
        stock.ShipmentOut,
        stock.StatementOfFacts,
        stock.SoFEvent,
        stock.ImportSoFStart,
        stock.RevaluateStart,
        stock.Account,
        stock.AccountMoveLine,
        stock.AccountMove,
        stock.ContainerType,
        stock.ShipmentContainer,
        lot.Lot,
        lot.LotQt,
        lot.LotReport,
        lot.LotContext,
        lot.LotShippingStart,
        lot.LotMatchingStart,
        lot.LotWeighingStart,
        lot.LotAddLot,
        lot.LotInvoicingLot,
        lot.LotInvoicingFee,
        lot.LotInvoicingInv,
        lot.LotAddLine,
        lot.LotImportLot,
        lot.LotInvoiceStart,
        lot.LotMatchingLot,
        lot.LotWeighingLot,
        lot.ContractsStart,
        lot.ContractDetail,
        lot.LotFCR,
        lot.LotMove,
        lot.LotAccountingGraph,
        workflow.ExecutionPlan,
        workflow.Event,
        workflow.Relation,
        workflow.Option,
        workflow.OptionLine,
        cron.Cron,
        cron.PriceCron,
        purchase.DocType,
        purchase.ContractDocumentType,
        purchase.DocTemplate,
        purchase.DocTypeTemplate,
        purchase.Mtm,
        weight_report.WeightReport,
        module='purchase', type_='model')
    Pool.register(
        forex.Forex,
        forex.ForexCoverFees,
        forex.ForexCategory,
        pricing.Component,
        pricing.Mtm,
        pricing.Estimated,
        pricing.Pricing,
        pricing.Period,
        pricing.Trigger,
        purchase.PurchaseCertification,
        purchase.PurchaseCertificationWeightBasis,
        purchase.PurchaseAssociation,
        purchase.PurchaseCrop,
        module='lot', type_='model')
    Pool.register(
        sale.Sale,
        sale.SaleLine,
        sale.SaleCreatePurchaseInput,
        sale.Derivative,
        sale.Valuation,
        sale.ValuationLine,
        sale.ValuationReport,
        sale.Fee,
        sale.Lot,
        sale.FeeLots,
        sale.Estimated,
        sale.Component,
        sale.Pricing,
        sale.Summary,
        forex.SForex,
        forex.ForexCoverPhysicalSale,
        sale.ContractDocumentType,
        sale.Mtm,
        sale.OpenPosition,
        module='sale', type_='model')
    Pool.register(
        lot.LotShipping,
        lot.LotMatching,
        #lot.LotMatchingUnit,
        lot.LotWeighing,
        lot.CreateContracts,
        lot.LotUnmatch,
        lot.LotUnship,
        lot.LotRemove,
        lot.LotInvoice,
        lot.LotAdding,
        lot.LotImporting,
        stock.FindVessel,
        stock.SofUpdate,
        stock.Revaluate,
        purchase.GoToBi,
        purchase_prepayment.CreatePrepaymentWizard,
        purchase.PurchaseAllocationsWizard,
        purchase.InvoicePayment,
        stock.ImportSoFWizard,
        dashboard.BotWizard,
        dashboard.DashboardLoader,
        forex.ForexReport,
        purchase.PnlReport,
        derivative.DerivativeMatchWizard,
        module='purchase', type_='wizard')
    Pool.register(
        sale.SaleCreatePurchase,
        sale.SaleAllocationsWizard,
        module='sale', type_='wizard')
    
