# 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 (
    account,
    configuration,
    purchase,
    sale,
    global_reporting,
    ctrm_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,
    dimension,
    weight_report,
    backtoback,
    service,
    invoice,
    duplicate,
    coffee,
)

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,
        ctrm_reporting.CTRMPhysicalPosition,
        ctrm_reporting.CTRMPhysicalPositionContext,
        ctrm_reporting.CTRMFinancialPosition,
        ctrm_reporting.CTRMFinancialPositionContext,
        ctrm_reporting.CTRMNetPosition,
        ctrm_reporting.CTRMNetPositionContext,
        ctrm_reporting.CTRMRealizedPnl,
        ctrm_reporting.CTRMRealizedPnlContext,
        ctrm_reporting.CTRMMtmPnl,
        ctrm_reporting.CTRMMtmPnlContext,
        ctrm_reporting.CTRMPnlExplain,
        ctrm_reporting.CTRMPnlExplainContext,
        ctrm_reporting.CTRMPnlDimension,
        ctrm_reporting.CTRMPnlDimensionContext,
        ctrm_reporting.CTRMCreditRisk,
        ctrm_reporting.CTRMCreditRiskContext,
        ctrm_reporting.CTRMShippingLogistics,
        ctrm_reporting.CTRMShippingLogisticsContext,
        ctrm_reporting.CTRMInventory,
        ctrm_reporting.CTRMInventoryContext,
        ctrm_reporting.CTRMContractPerformance,
        ctrm_reporting.CTRMContractPerformanceContext,
        ctrm_reporting.CTRMScheduling,
        ctrm_reporting.CTRMSchedulingContext,
        ctrm_reporting.CTRMAccruals,
        ctrm_reporting.CTRMAccrualsContext,
        ctrm_reporting.CTRMSettlements,
        ctrm_reporting.CTRMSettlementsContext,
        ctrm_reporting.CTRMCashFlow,
        ctrm_reporting.CTRMCashFlowContext,
        ctrm_reporting.CTRMGLReconciliation,
        ctrm_reporting.CTRMGLReconciliationContext,
        configuration.Configuration,
        pricing.ImportPricesStart,
        pricing.ImportPricesResult,
        coffee.CoffeeSample,
        coffee.CoffeeCuppingCriterion,
        coffee.CoffeeCuppingSession,
        coffee.CoffeeCuppingSessionSample,
        coffee.CoffeeCuppingCup,
        coffee.CoffeeCuppingResult,
        coffee.CoffeeCuppingResultLine,
        coffee.CoffeeLabAnalysis,
        coffee.PurchaseLine,
        coffee.SaleLine,
        duplicate.TradeCustomDuplicateStart,
        module='purchase_trade', type_='model')
    Pool.register(
        configuration.PurchaseConfiguration,
        module='purchase', type_='model')
    Pool.register(
        configuration.SaleConfiguration,
        module='sale', type_='model')
    Pool.register(
        incoming.ImportSwift,
        incoming.PrepareDocuments,
        incoming.AnalyzeConditions,
        lc.CreateLCWizard,
        pricing.ImportPrices,
        duplicate.TradeCustomDuplicate,
        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,
        party.PartyExecutionSla,
        party.PartyExecutionPlace,
        payment_term.PaymentTerm,
        payment_term.PaymentTermLine,
        stock.CharterRateType,
        stock.CharterConditionRate,
        stock.CharterConditionLaytimeStartRule,
        stock.CharterCondition,
        stock.CharterParty,
        purchase.ContractClause,
        purchase.ContractTemplate,
        purchase.ContractTemplateLine,
        purchase.ContractClauseSelection,
        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.FeeRule,
        fee.FeeLots,
        purchase.FeeLots,
        valuation.Valuation,
        valuation.ValuationLine, 
        valuation.ValuationDyn,
        valuation.ValuationReport,
        valuation.ValuationReportContext,
        valuation.ValuationProcessDimension,
        valuation.ValuationProcessStart,
        valuation.ValuationProcessResult,
        derivative.Derivative,
        derivative.DerivativeMatch,
        derivative.MatchWizardStart,
        derivative.DerivativeReport,
        derivative.DerivativeReportContext,
        fee.FeeReport,
        fee.FeeContext,
        forex.ForexCoverPhysicalContract,
        forex.PForex,
        forex.ForexBI,
        purchase.PurchasePnlGraph,
        purchase.PnlBI,
        purchase.PositionBI,
        stock.Move,
        stock.Location,
        stock.InvoiceLine,
        stock.ShipmentIn,
        stock.ShipmentControllerEmailStart,
        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.LotPlanTransportStart,
        lot.LotPlanTransportLine,
        lot.LotMarkFinishedStart,
        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.MirrorStart,
        lot.MirrorLine,
        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.PurchaseStrategy,
        purchase.PriceComposition,
        purchase.PremiumComposition,
        purchase.QualityAnalysis,
        purchase.Assay,
        purchase.AssayLine,
        purchase.AssayElement,
        purchase.AssayUnit,
        purchase.PayableRule,
        purchase.PenaltyRule,
        purchase.PenaltyRuleTier,
        purchase.ConcentrateTerm,
        backtoback.Backtoback,
        dimension.AnalyticDimension,
        dimension.AnalyticDimensionValue,
        dimension.AnalyticDimensionAssignment,
        weight_report.WeightReport,
        module='purchase', type_='model')
    Pool.register(
        account.PhysicalTradeIFRS,
        module='purchase_trade', type_='model')
    Pool.register(
        configuration.AccountConfiguration,
        configuration.AccountConfigurationDefaultAccount,
        invoice.InvoiceLineLotWeight,
        invoice.InvoicePaddingReport,
        invoice.InvoicePaddingContext,
        module='purchase_trade', type_='model')
    Pool.register(
        invoice.Invoice,
        invoice.InvoiceLine,
        module='account_invoice', type_='model')
    Pool.register(
        forex.Forex,
        forex.ForexCoverFees,
        forex.ForexCategory,
        pricing.Component,
        pricing.Mtm,
        pricing.MtmStrategy,
        pricing.MtmScenario,
        pricing.MtmSnapshot,
        pricing.PriceMatrix,
        pricing.PriceMatrixLine,
        pricing.Estimated,
        pricing.Pricing,
        pricing.Period,
        pricing.Trigger,
        purchase.PurchaseCertification,
        purchase.PurchaseCertificationWeightBasis,
        purchase.PurchaseAssociation,
        purchase.PurchaseCrop,
        module='lot', type_='model')
    Pool.register(
        sale.ContractClauseSelection,
        sale.CharterCondition,
        sale.Sale,
        sale.SaleLine,
        sale.SaleCreatePurchaseInput,
        sale.Derivative,
        sale.Valuation,
        sale.ValuationLine,
        sale.ValuationDyn,
        sale.ValuationReport,
        sale.Fee,
        sale.Lot,
        sale.FeeLots,
        sale.Estimated,
        sale.Component,
        sale.Pricing,
        sale.Summary,
        forex.SForex,
        forex.ForexCoverPhysicalSale,
        sale.ContractDocumentType,
        sale.SaleStrategy,
        sale.OpenPosition,
        sale.Backtoback,
        sale.AnalyticDimensionAssignment,
        sale.PriceComposition,
        sale.PremiumComposition,
        module='sale', type_='model')
    Pool.register(
        lot.LotShipping,
        lot.LotPlanTransport,
        lot.LotMatching,
        lot.LotGoMatching,
        #lot.LotMatchingUnit,
        lot.LotWeighing,
        lot.CreateContracts,
        lot.CreateMirror,
        lot.LotUnmatch,
        lot.LotMarkFinished,
        lot.LotUnship,
        lot.LotRemove,
        lot.LotInvoice,
        lot.LotAdding,
        lot.LotImporting,
        stock.ShipmentControllerEmail,
        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,
        purchase.PositionReport,
        valuation.ValuationProcess,
        derivative.DerivativeMatchWizard,
        module='purchase', type_='wizard')
    Pool.register(
        sale.SaleCreatePurchase,
        sale.SaleAllocationsWizard,
        module='sale', type_='wizard')
    Pool.register(
        invoice.InvoiceReport,
        invoice.SaleReport,
        invoice.PurchaseReport,
        stock.ShipmentShippingReport,
        stock.ShipmentInsuranceReport,
        stock.ShipmentCOOReport,
        stock.ShipmentPackingListReport,
        stock.ShipmentLinkageReport,
        stock.LotReportLinkageReport,
        stock.LotReportLinkageFinalReport,
        module='purchase_trade', type_='report')
    
