Split lims module code and merge planification and department modules
|
@ -6,11 +6,6 @@
|
|||
|
||||
These instructions will get you a copy of the project up and running.
|
||||
|
||||
### Prerequisites
|
||||
|
||||
You need a working [Tryton](http://www.tryton.org/) system. Follow the [first steps](http://doc.tryton.org/4.4/trytond/doc/index.html#first-steps) in order to install Tryton.
|
||||
|
||||
|
||||
### Installing
|
||||
|
||||
Execute:
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
Copyright (C) 2017 Ignacio Parszyk <iparszyk@kalenislims.com>
|
||||
Copyright (C) 2013-2017 Sebastián Marró <smarro@kalenislims.com>
|
||||
Copyright (C) 2017-2018 Ignacio Parszyk <iparszyk@kalenislims.com>
|
||||
Copyright (C) 2013-2018 Sebastián Marró <smarro@kalenislims.com>
|
||||
Copyright (C) 2013-2016 Luis Falcon <falcon@gnu.org>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
|
|
593
lims/__init__.py
|
@ -3,269 +3,348 @@
|
|||
# the full copyright notices and license terms.
|
||||
|
||||
from trytond.pool import Pool
|
||||
from .formula_parser import *
|
||||
from .configuration import *
|
||||
from .lims import *
|
||||
from .stock import *
|
||||
from .product import *
|
||||
from .party import *
|
||||
from report import *
|
||||
from wizard import *
|
||||
from . import formula_parser
|
||||
from . import department
|
||||
from . import configuration
|
||||
from . import laboratory
|
||||
from . import analysis
|
||||
from . import sample
|
||||
from . import entry
|
||||
from . import notebook
|
||||
from . import certification
|
||||
from . import control_tendency
|
||||
from . import planification
|
||||
from . import results_report
|
||||
from . import stock
|
||||
from . import uom
|
||||
from . import party
|
||||
|
||||
|
||||
def register():
|
||||
Pool.register(
|
||||
FormulaParser,
|
||||
LimsLaboratory2,
|
||||
LimsNotebookView,
|
||||
LimsNotebookViewColumn,
|
||||
LimsUserRole,
|
||||
LimsUserRoleGroup,
|
||||
LimsPrinter,
|
||||
User,
|
||||
LimsUserLaboratory,
|
||||
LimsConfiguration,
|
||||
LimsConfigurationLaboratory,
|
||||
LimsLabWorkYear,
|
||||
LimsLabWorkYearSequence,
|
||||
LimsLaboratoryProfessional,
|
||||
LimsLaboratory,
|
||||
LimsLabMethod,
|
||||
LimsLabDeviceType,
|
||||
LimsLabDevice,
|
||||
LimsLabDeviceLaboratory,
|
||||
LimsProductType,
|
||||
LimsMatrix,
|
||||
LimsFormula,
|
||||
LimsFractionType,
|
||||
LimsLaboratoryCVCorrection,
|
||||
LimsFormulaVariable,
|
||||
LimsAnalysis,
|
||||
LimsTypification,
|
||||
LimsTypificationAditional,
|
||||
LimsTypificationReadOnly,
|
||||
LimsCalculatedTypification,
|
||||
LimsCalculatedTypificationReadOnly,
|
||||
LimsPackagingType,
|
||||
LimsAnalysisIncluded,
|
||||
LimsAnalysisDevice,
|
||||
LimsCertificationType,
|
||||
LimsTechnicalScope,
|
||||
LimsTechnicalScopeVersion,
|
||||
LimsTechnicalScopeVersionLine,
|
||||
LimsPackagingIntegrity,
|
||||
LimsEntrySuspensionReason,
|
||||
LimsEntry,
|
||||
LimsZone,
|
||||
LimsVariety,
|
||||
LimsSampleProducer,
|
||||
LimsSample,
|
||||
LimsFraction,
|
||||
LimsService,
|
||||
LimsConcentrationLevel,
|
||||
LimsEntryDetailAnalysis,
|
||||
LimsNotebook,
|
||||
LimsResultsReport,
|
||||
LimsPlanification,
|
||||
LimsNotebookLine,
|
||||
LimsNotebookLineAllFields,
|
||||
LimsNotebookLineProfessional,
|
||||
LimsRangeType,
|
||||
LimsResultsReportVersion,
|
||||
LimsResultsReportVersionDetail,
|
||||
LimsResultsReportVersionDetailLine,
|
||||
LimsAnalysisFamily,
|
||||
LimsAnalysisFamilyCertificant,
|
||||
LimsMatrixVariety,
|
||||
LimsLabDeviceTypeLabMethod,
|
||||
LimsAnalysisLaboratory,
|
||||
LimsAnalysisLabMethod,
|
||||
LimsNotebookLineLaboratoryProfessional,
|
||||
LimsEntryInvoiceContact,
|
||||
LimsEntryReportContact,
|
||||
LimsEntryAcknowledgmentContact,
|
||||
LimsVolumeConversion,
|
||||
LimsUomConversion,
|
||||
LimsRange,
|
||||
LimsControlTendency,
|
||||
LimsControlTendencyDetail,
|
||||
LimsControlTendencyDetailRule,
|
||||
LimsDuplicateSampleStart,
|
||||
LimsDuplicateSampleFromEntryStart,
|
||||
LimsCopyTypificationStart,
|
||||
LimsCopyCalculatedTypificationStart,
|
||||
LimsRelateAnalysisStart,
|
||||
LimsNotebookInitialConcentrationCalcStart,
|
||||
LimsNotebookResultsConversionStart,
|
||||
LimsNotebookLimitsValidationStart,
|
||||
LimsNotebookInternalRelationsCalc1Start,
|
||||
LimsNotebookInternalRelationsCalc1Relation,
|
||||
LimsNotebookInternalRelationsCalc1Variable,
|
||||
LimsNotebookInternalRelationsCalc2Start,
|
||||
LimsNotebookInternalRelationsCalc2Result,
|
||||
LimsNotebookInternalRelationsCalc2Relation,
|
||||
LimsNotebookInternalRelationsCalc2Variable,
|
||||
LimsNotebookInternalRelationsCalc2Process,
|
||||
LimsNotebookLoadResultsFormulaStart,
|
||||
LimsNotebookLoadResultsFormulaEmpty,
|
||||
LimsNotebookLoadResultsFormulaResult,
|
||||
LimsNotebookLoadResultsFormulaLine,
|
||||
LimsNotebookLoadResultsFormulaAction,
|
||||
LimsNotebookLoadResultsFormulaProcess,
|
||||
LimsNotebookLoadResultsFormulaVariable,
|
||||
LimsNotebookLoadResultsFormulaBeginning,
|
||||
LimsNotebookLoadResultsFormulaConfirm,
|
||||
LimsNotebookLoadResultsFormulaSit1,
|
||||
LimsNotebookLoadResultsFormulaSit2,
|
||||
LimsNotebookLoadResultsFormulaSit2Detail,
|
||||
LimsNotebookLoadResultsFormulaSit2DetailLine,
|
||||
LimsNotebookLoadResultsManualStart,
|
||||
LimsNotebookLoadResultsManualEmpty,
|
||||
LimsNotebookLoadResultsManualResult,
|
||||
LimsNotebookLoadResultsManualLine,
|
||||
LimsNotebookLoadResultsManualSit1,
|
||||
LimsNotebookLoadResultsManualSit2,
|
||||
LimsNotebookAddInternalRelationsStart,
|
||||
LimsNotebookAcceptLinesStart,
|
||||
LimsNotebookLineRepeatAnalysisStart,
|
||||
FractionsByLocationsStart,
|
||||
LimsNotebookResultsVerificationStart,
|
||||
LimsUncertaintyCalcStart,
|
||||
LimsNotebookPrecisionControlStart,
|
||||
LimsMeansDeviationsCalcStart,
|
||||
LimsMeansDeviationsCalcEmpty,
|
||||
LimsMeansDeviationsCalcResult,
|
||||
LimsControlResultLine,
|
||||
LimsControlResultLineDetail,
|
||||
LimsMeansDeviationsCalcResult2,
|
||||
LimsTendenciesAnalysisStart,
|
||||
LimsTendenciesAnalysisResult,
|
||||
LimsDivideReportsResult,
|
||||
LimsDivideReportsDetail,
|
||||
LimsDivideReportsProcess,
|
||||
LimsGenerateResultsReportStart,
|
||||
LimsGenerateResultsReportEmpty,
|
||||
LimsGenerateResultsReportResultAut,
|
||||
LimsGenerateResultsReportResultAutNotebook,
|
||||
LimsGenerateResultsReportResultAutNotebookLine,
|
||||
LimsGenerateResultsReportResultAutExcludedNotebook,
|
||||
LimsGenerateResultsReportResultAutExcludedNotebookLine,
|
||||
LimsGenerateResultsReportResultMan,
|
||||
LimsDuplicateAnalysisFamilyStart,
|
||||
LimsResultsReportAnnulationStart,
|
||||
LimsCountersampleStorageStart,
|
||||
LimsCountersampleStorageEmpty,
|
||||
LimsCountersampleStorageResult,
|
||||
LimsCountersampleStorageRevertStart,
|
||||
LimsCountersampleStorageRevertEmpty,
|
||||
LimsCountersampleStorageRevertResult,
|
||||
LimsCountersampleDischargeStart,
|
||||
LimsCountersampleDischargeEmpty,
|
||||
LimsCountersampleDischargeResult,
|
||||
LimsFractionDischargeStart,
|
||||
LimsFractionDischargeEmpty,
|
||||
LimsFractionDischargeResult,
|
||||
LimsFractionDischargeRevertStart,
|
||||
LimsFractionDischargeRevertEmpty,
|
||||
LimsFractionDischargeRevertResult,
|
||||
LimsCreateSampleStart,
|
||||
LimsCreateSampleService,
|
||||
LimsChangeInvoicePartyStart,
|
||||
LimsChangeInvoicePartyError,
|
||||
AddTypificationsStart,
|
||||
RemoveTypificationsStart,
|
||||
ChangeEstimatedDaysForResultsStart,
|
||||
LimsCountersampleStoragePrintStart,
|
||||
LimsCountersampleDischargePrintStart,
|
||||
PrintAnalysisPendingInformStart,
|
||||
Location,
|
||||
Move,
|
||||
ShipmentInternal,
|
||||
InventoryLine,
|
||||
Uom,
|
||||
UomCategory,
|
||||
Template,
|
||||
Party,
|
||||
Address,
|
||||
Company,
|
||||
PrintAnalysisCheckedPendingInformStart,
|
||||
formula_parser.FormulaParser,
|
||||
department.Department,
|
||||
department.UserDepartment,
|
||||
configuration.NotebookView,
|
||||
configuration.NotebookViewColumn,
|
||||
configuration.UserRole,
|
||||
configuration.UserRoleGroup,
|
||||
configuration.Printer,
|
||||
configuration.User,
|
||||
configuration.UserLaboratory,
|
||||
configuration.Configuration,
|
||||
configuration.ConfigurationLaboratory,
|
||||
configuration.ConfigurationSequence,
|
||||
configuration.ConfigurationProductCategory,
|
||||
configuration.LabWorkYear,
|
||||
configuration.LabWorkYearSequence,
|
||||
laboratory.LaboratoryProfessional,
|
||||
laboratory.Laboratory,
|
||||
laboratory.LabMethod,
|
||||
laboratory.LabDeviceType,
|
||||
laboratory.LabDevice,
|
||||
laboratory.LabDeviceLaboratory,
|
||||
analysis.ProductType,
|
||||
analysis.Matrix,
|
||||
analysis.Formula,
|
||||
sample.FractionType,
|
||||
laboratory.LaboratoryCVCorrection,
|
||||
analysis.FormulaVariable,
|
||||
analysis.Analysis,
|
||||
analysis.Typification,
|
||||
analysis.TypificationAditional,
|
||||
analysis.TypificationReadOnly,
|
||||
analysis.CalculatedTypification,
|
||||
analysis.CalculatedTypificationReadOnly,
|
||||
sample.PackagingType,
|
||||
analysis.AnalysisIncluded,
|
||||
analysis.AnalysisDevice,
|
||||
certification.CertificationType,
|
||||
certification.TechnicalScope,
|
||||
certification.TechnicalScopeVersion,
|
||||
certification.TechnicalScopeVersionLine,
|
||||
sample.PackagingIntegrity,
|
||||
entry.EntrySuspensionReason,
|
||||
entry.Entry,
|
||||
sample.Zone,
|
||||
sample.Variety,
|
||||
sample.SampleProducer,
|
||||
sample.Sample,
|
||||
sample.Fraction,
|
||||
sample.Service,
|
||||
uom.ConcentrationLevel,
|
||||
entry.EntryDetailAnalysis,
|
||||
notebook.Notebook,
|
||||
results_report.ResultsReport,
|
||||
notebook.NotebookLine,
|
||||
notebook.NotebookLineAllFields,
|
||||
notebook.NotebookLineProfessional,
|
||||
control_tendency.RangeType,
|
||||
results_report.ResultsReportVersion,
|
||||
results_report.ResultsReportVersionDetail,
|
||||
results_report.ResultsReportVersionDetailLine,
|
||||
certification.AnalysisFamily,
|
||||
certification.AnalysisFamilyCertificant,
|
||||
sample.MatrixVariety,
|
||||
laboratory.LabDeviceTypeLabMethod,
|
||||
analysis.AnalysisLaboratory,
|
||||
analysis.AnalysisLabMethod,
|
||||
notebook.NotebookLineLaboratoryProfessional,
|
||||
entry.EntryInvoiceContact,
|
||||
entry.EntryReportContact,
|
||||
entry.EntryAcknowledgmentContact,
|
||||
uom.VolumeConversion,
|
||||
uom.UomConversion,
|
||||
control_tendency.Range,
|
||||
control_tendency.ControlTendency,
|
||||
control_tendency.ControlTendencyDetail,
|
||||
control_tendency.ControlTendencyDetailRule,
|
||||
sample.DuplicateSampleStart,
|
||||
sample.DuplicateSampleFromEntryStart,
|
||||
analysis.CopyTypificationStart,
|
||||
analysis.CopyCalculatedTypificationStart,
|
||||
analysis.RelateAnalysisStart,
|
||||
notebook.NotebookInitialConcentrationCalcStart,
|
||||
notebook.NotebookResultsConversionStart,
|
||||
notebook.NotebookLimitsValidationStart,
|
||||
notebook.NotebookInternalRelationsCalc1Start,
|
||||
notebook.NotebookInternalRelationsCalc1Relation,
|
||||
notebook.NotebookInternalRelationsCalc1Variable,
|
||||
notebook.NotebookInternalRelationsCalc2Start,
|
||||
notebook.NotebookInternalRelationsCalc2Result,
|
||||
notebook.NotebookInternalRelationsCalc2Relation,
|
||||
notebook.NotebookInternalRelationsCalc2Variable,
|
||||
notebook.NotebookInternalRelationsCalc2Process,
|
||||
notebook.NotebookLoadResultsFormulaStart,
|
||||
notebook.NotebookLoadResultsFormulaEmpty,
|
||||
notebook.NotebookLoadResultsFormulaResult,
|
||||
notebook.NotebookLoadResultsFormulaLine,
|
||||
notebook.NotebookLoadResultsFormulaAction,
|
||||
notebook.NotebookLoadResultsFormulaProcess,
|
||||
notebook.NotebookLoadResultsFormulaVariable,
|
||||
notebook.NotebookLoadResultsFormulaBeginning,
|
||||
notebook.NotebookLoadResultsFormulaConfirm,
|
||||
notebook.NotebookLoadResultsFormulaSit1,
|
||||
notebook.NotebookLoadResultsFormulaSit2,
|
||||
notebook.NotebookLoadResultsFormulaSit2Detail,
|
||||
notebook.NotebookLoadResultsFormulaSit2DetailLine,
|
||||
notebook.NotebookLoadResultsManualStart,
|
||||
notebook.NotebookLoadResultsManualEmpty,
|
||||
notebook.NotebookLoadResultsManualResult,
|
||||
notebook.NotebookLoadResultsManualLine,
|
||||
notebook.NotebookLoadResultsManualSit1,
|
||||
notebook.NotebookLoadResultsManualSit2,
|
||||
notebook.NotebookAddInternalRelationsStart,
|
||||
notebook.NotebookAcceptLinesStart,
|
||||
notebook.NotebookLineRepeatAnalysisStart,
|
||||
sample.FractionsByLocationsStart,
|
||||
notebook.NotebookResultsVerificationStart,
|
||||
notebook.UncertaintyCalcStart,
|
||||
notebook.NotebookPrecisionControlStart,
|
||||
control_tendency.MeansDeviationsCalcStart,
|
||||
control_tendency.MeansDeviationsCalcEmpty,
|
||||
control_tendency.MeansDeviationsCalcResult,
|
||||
control_tendency.ControlResultLine,
|
||||
control_tendency.ControlResultLineDetail,
|
||||
control_tendency.MeansDeviationsCalcResult2,
|
||||
control_tendency.TendenciesAnalysisStart,
|
||||
control_tendency.TendenciesAnalysisResult,
|
||||
results_report.DivideReportsResult,
|
||||
results_report.DivideReportsDetail,
|
||||
results_report.DivideReportsProcess,
|
||||
results_report.GenerateResultsReportStart,
|
||||
results_report.GenerateResultsReportEmpty,
|
||||
results_report.GenerateResultsReportResultAut,
|
||||
results_report.GenerateResultsReportResultAutNotebook,
|
||||
results_report.GenerateResultsReportResultAutNotebookLine,
|
||||
results_report.GenerateResultsReportResultAutExcludedNotebook,
|
||||
results_report.GenerateResultsReportResultAutExcludedNotebookLine,
|
||||
results_report.GenerateResultsReportResultMan,
|
||||
certification.DuplicateAnalysisFamilyStart,
|
||||
results_report.ResultsReportAnnulationStart,
|
||||
sample.CountersampleStorageStart,
|
||||
sample.CountersampleStorageEmpty,
|
||||
sample.CountersampleStorageResult,
|
||||
sample.CountersampleStorageRevertStart,
|
||||
sample.CountersampleStorageRevertEmpty,
|
||||
sample.CountersampleStorageRevertResult,
|
||||
sample.CountersampleDischargeStart,
|
||||
sample.CountersampleDischargeEmpty,
|
||||
sample.CountersampleDischargeResult,
|
||||
sample.FractionDischargeStart,
|
||||
sample.FractionDischargeEmpty,
|
||||
sample.FractionDischargeResult,
|
||||
sample.FractionDischargeRevertStart,
|
||||
sample.FractionDischargeRevertEmpty,
|
||||
sample.FractionDischargeRevertResult,
|
||||
sample.CreateSampleStart,
|
||||
sample.CreateSampleService,
|
||||
entry.ChangeInvoicePartyStart,
|
||||
entry.ChangeInvoicePartyError,
|
||||
analysis.AddTypificationsStart,
|
||||
analysis.RemoveTypificationsStart,
|
||||
notebook.ChangeEstimatedDaysForResultsStart,
|
||||
sample.CountersampleStoragePrintStart,
|
||||
sample.CountersampleDischargePrintStart,
|
||||
notebook.PrintAnalysisPendingInformStart,
|
||||
stock.Location,
|
||||
stock.Move,
|
||||
stock.ShipmentInternal,
|
||||
uom.Uom,
|
||||
uom.UomCategory,
|
||||
uom.Template,
|
||||
party.Party,
|
||||
party.Address,
|
||||
party.Company,
|
||||
notebook.PrintAnalysisCheckedPendingInformStart,
|
||||
planification.Planification,
|
||||
planification.PlanificationTechnician,
|
||||
planification.PlanificationTechnicianDetail,
|
||||
planification.PlanificationDetail,
|
||||
planification.PlanificationServiceDetail,
|
||||
planification.NotebookLineFraction,
|
||||
planification.PlanificationServiceDetailLaboratoryProfessional,
|
||||
planification.PlanificationAnalysis,
|
||||
planification.PlanificationFraction,
|
||||
planification.FractionReagent,
|
||||
planification.LabProfessionalMethod,
|
||||
planification.LabProfessionalMethodRequalification,
|
||||
planification.LabProfessionalMethodRequalificationSupervisor,
|
||||
planification.LabProfessionalMethodRequalificationControl,
|
||||
planification.BlindSample,
|
||||
planification.RelateTechniciansStart,
|
||||
planification.RelateTechniciansResult,
|
||||
planification.RelateTechniciansDetail1,
|
||||
planification.RelateTechniciansDetail2,
|
||||
planification.RelateTechniciansDetail3,
|
||||
planification.UnlinkTechniciansStart,
|
||||
planification.UnlinkTechniciansDetail1,
|
||||
planification.AddFractionControlStart,
|
||||
planification.AddFractionRMBMZStart,
|
||||
planification.AddFractionBREStart,
|
||||
planification.AddFractionMRTStart,
|
||||
planification.RemoveControlStart,
|
||||
planification.AddAnalysisStart,
|
||||
planification.SearchFractionsNext,
|
||||
planification.SearchFractionsDetail,
|
||||
planification.SearchPlannedFractionsStart,
|
||||
planification.SearchPlannedFractionsNext,
|
||||
planification.SearchPlannedFractionsDetail,
|
||||
planification.CreateFractionControlStart,
|
||||
planification.ReleaseFractionStart,
|
||||
planification.ReleaseFractionEmpty,
|
||||
planification.ReleaseFractionResult,
|
||||
planification.QualificationSituations,
|
||||
planification.QualificationSituation,
|
||||
planification.QualificationAction,
|
||||
planification.QualificationSituation2,
|
||||
planification.QualificationSituation3,
|
||||
planification.QualificationSituation4,
|
||||
planification.ReplaceTechnicianStart,
|
||||
planification.PrintBlindSampleReportStart,
|
||||
planification.PrintPendingServicesUnplannedReportStart,
|
||||
module='lims', type_='model')
|
||||
Pool.register(
|
||||
LimsPrintAcknowledgmentOfReceipt,
|
||||
LimsEntryLabelsPrinter,
|
||||
LimsSampleLabelsPrinter,
|
||||
LimsPrintControlChart,
|
||||
LimsCountersampleStoragePrint,
|
||||
LimsCountersampleDischargePrint,
|
||||
PrintAnalysisPendingInform,
|
||||
LimsDuplicateSample,
|
||||
LimsDuplicateSampleFromEntry,
|
||||
LimsForwardAcknowledgmentOfReceipt,
|
||||
LimsCopyTypification,
|
||||
LimsCopyCalculatedTypification,
|
||||
LimsRelateAnalysis,
|
||||
LimsManageServices,
|
||||
LimsCompleteServices,
|
||||
LimsNotebookInitialConcentrationCalc,
|
||||
LimsNotebookLineInitialConcentrationCalc,
|
||||
LimsNotebookResultsConversion,
|
||||
LimsNotebookLineResultsConversion,
|
||||
LimsNotebookLimitsValidation,
|
||||
LimsNotebookLineLimitsValidation,
|
||||
LimsNotebookInternalRelationsCalc1,
|
||||
LimsNotebookLineInternalRelationsCalc1,
|
||||
LimsNotebookInternalRelationsCalc2,
|
||||
LimsNotebookLineInternalRelationsCalc2,
|
||||
LimsNotebookLoadResultsFormula,
|
||||
LimsNotebookLoadResultsManual,
|
||||
LimsNotebookAddInternalRelations,
|
||||
LimsNotebookAcceptLines,
|
||||
LimsNotebookLineAcceptLines,
|
||||
LimsNotebookLineUnacceptLines,
|
||||
LimsNotebookLineRepeatAnalysis,
|
||||
FractionsByLocations,
|
||||
LimsNotebookResultsVerification,
|
||||
LimsNotebookLineResultsVerification,
|
||||
LimsUncertaintyCalc,
|
||||
LimsNotebookLineUncertaintyCalc,
|
||||
LimsNotebookPrecisionControl,
|
||||
LimsNotebookLinePrecisionControl,
|
||||
LimsMeansDeviationsCalc,
|
||||
LimsTendenciesAnalysis,
|
||||
LimsDivideReports,
|
||||
LimsGenerateResultsReport,
|
||||
LimsPrintResultsReport,
|
||||
LimsDuplicateAnalysisFamily,
|
||||
LimsServiceResultsReport,
|
||||
LimsFractionResultsReport,
|
||||
LimsSampleResultsReport,
|
||||
LimsResultsReportSample,
|
||||
LimsResultsReportAnnulation,
|
||||
LimsCountersampleStorage,
|
||||
LimsCountersampleStorageRevert,
|
||||
LimsCountersampleDischarge,
|
||||
LimsFractionDischarge,
|
||||
LimsFractionDischargeRevert,
|
||||
LimsCreateSample,
|
||||
OpenNotebookLines,
|
||||
LimsCreateAnalysisProduct,
|
||||
LimsChangeInvoiceParty,
|
||||
OpenTypifications,
|
||||
AddTypifications,
|
||||
RemoveTypifications,
|
||||
ChangeEstimatedDaysForResults,
|
||||
PrintAnalysisCheckedPendingInform,
|
||||
entry.PrintAcknowledgmentOfReceipt,
|
||||
entry.EntryLabelsPrinter,
|
||||
sample.SampleLabelsPrinter,
|
||||
control_tendency.PrintControlChart,
|
||||
sample.CountersampleStoragePrint,
|
||||
sample.CountersampleDischargePrint,
|
||||
notebook.PrintAnalysisPendingInform,
|
||||
sample.DuplicateSample,
|
||||
sample.DuplicateSampleFromEntry,
|
||||
entry.ForwardAcknowledgmentOfReceipt,
|
||||
analysis.CopyTypification,
|
||||
analysis.CopyCalculatedTypification,
|
||||
analysis.RelateAnalysis,
|
||||
sample.ManageServices,
|
||||
sample.CompleteServices,
|
||||
notebook.NotebookInitialConcentrationCalc,
|
||||
notebook.NotebookLineInitialConcentrationCalc,
|
||||
notebook.NotebookResultsConversion,
|
||||
notebook.NotebookLineResultsConversion,
|
||||
notebook.NotebookLimitsValidation,
|
||||
notebook.NotebookLineLimitsValidation,
|
||||
notebook.NotebookInternalRelationsCalc1,
|
||||
notebook.NotebookLineInternalRelationsCalc1,
|
||||
notebook.NotebookInternalRelationsCalc2,
|
||||
notebook.NotebookLineInternalRelationsCalc2,
|
||||
notebook.NotebookLoadResultsFormula,
|
||||
notebook.NotebookLoadResultsManual,
|
||||
notebook.NotebookAddInternalRelations,
|
||||
notebook.NotebookAcceptLines,
|
||||
notebook.NotebookLineAcceptLines,
|
||||
notebook.NotebookLineUnacceptLines,
|
||||
notebook.NotebookLineRepeatAnalysis,
|
||||
sample.FractionsByLocations,
|
||||
notebook.NotebookResultsVerification,
|
||||
notebook.NotebookLineResultsVerification,
|
||||
notebook.UncertaintyCalc,
|
||||
notebook.NotebookLineUncertaintyCalc,
|
||||
notebook.NotebookPrecisionControl,
|
||||
notebook.NotebookLinePrecisionControl,
|
||||
control_tendency.MeansDeviationsCalc,
|
||||
control_tendency.TendenciesAnalysis,
|
||||
results_report.DivideReports,
|
||||
results_report.GenerateResultsReport,
|
||||
results_report.PrintResultsReport,
|
||||
certification.DuplicateAnalysisFamily,
|
||||
results_report.ServiceResultsReport,
|
||||
results_report.FractionResultsReport,
|
||||
results_report.SampleResultsReport,
|
||||
results_report.ResultsReportSample,
|
||||
results_report.ResultsReportAnnulation,
|
||||
sample.CountersampleStorage,
|
||||
sample.CountersampleStorageRevert,
|
||||
sample.CountersampleDischarge,
|
||||
sample.FractionDischarge,
|
||||
sample.FractionDischargeRevert,
|
||||
sample.CreateSample,
|
||||
notebook.OpenNotebookLines,
|
||||
analysis.CreateAnalysisProduct,
|
||||
entry.ChangeInvoiceParty,
|
||||
analysis.OpenTypifications,
|
||||
analysis.AddTypifications,
|
||||
analysis.RemoveTypifications,
|
||||
notebook.ChangeEstimatedDaysForResults,
|
||||
notebook.PrintAnalysisCheckedPendingInform,
|
||||
planification.RelateTechnicians,
|
||||
planification.UnlinkTechnicians,
|
||||
planification.AddFractionControl,
|
||||
planification.AddFractionRMBMZ,
|
||||
planification.AddFractionBRE,
|
||||
planification.AddFractionMRT,
|
||||
planification.RemoveControl,
|
||||
planification.AddAnalysis,
|
||||
planification.SearchFractions,
|
||||
planification.SearchPlannedFractions,
|
||||
planification.CreateFractionControl,
|
||||
planification.ReleaseFraction,
|
||||
planification.TechniciansQualification,
|
||||
planification.ReplaceTechnician,
|
||||
planification.LoadServices,
|
||||
planification.PrintBlindSampleReport,
|
||||
planification.PrintPendingServicesUnplannedReport,
|
||||
module='lims', type_='wizard')
|
||||
Pool.register(
|
||||
LimsAcknowledgmentOfReceipt,
|
||||
LimsEntryDetail,
|
||||
LimsEntryLabels,
|
||||
LimsControlChartReport,
|
||||
LimsResultReport,
|
||||
LimsResultReportTranscription,
|
||||
LimsGlobalResultReport,
|
||||
LimsCountersampleStorageReport,
|
||||
LimsCountersampleDischargeReport,
|
||||
AnalysisPendingInform,
|
||||
AnalysisCheckedPendingInform,
|
||||
entry.AcknowledgmentOfReceipt,
|
||||
entry.EntryDetail,
|
||||
entry.EntryLabels,
|
||||
control_tendency.ControlChartReport,
|
||||
results_report.ResultReport,
|
||||
results_report.ResultReportTranscription,
|
||||
results_report.GlobalResultReport,
|
||||
sample.CountersampleStorageReport,
|
||||
sample.CountersampleDischargeReport,
|
||||
notebook.AnalysisPendingInform,
|
||||
notebook.AnalysisCheckedPendingInform,
|
||||
planification.PlanificationSequenceReport,
|
||||
planification.PlanificationWorksheetAnalysisReport,
|
||||
planification.PlanificationWorksheetMethodReport,
|
||||
planification.PlanificationWorksheetReport,
|
||||
planification.PendingServicesUnplannedReport,
|
||||
planification.PendingServicesUnplannedSpreadsheet,
|
||||
planification.BlindSampleReport,
|
||||
planification.PlanificationSequenceAnalysisReport,
|
||||
module='lims', type_='report')
|
||||
|
|
|
@ -0,0 +1,526 @@
|
|||
<?xml version="1.0"?>
|
||||
<tryton>
|
||||
<data>
|
||||
|
||||
<!-- Typification -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_typification_view_form">
|
||||
<field name="model">lims.typification</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">typification_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_typification_view_list">
|
||||
<field name="model">lims.typification</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">typification_list</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.act_window" id="act_lims_typification_list">
|
||||
<field name="name">Typifications</field>
|
||||
<field name="res_model">lims.typification</field>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_lims_typification_view_list">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="lims_typification_view_list"/>
|
||||
<field name="act_window" ref="act_lims_typification_list"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_lims_typification_view_form">
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="view" ref="lims_typification_view_form"/>
|
||||
<field name="act_window" ref="act_lims_typification_list"/>
|
||||
</record>
|
||||
|
||||
<!-- Typification Read Only -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_typification_readonly_view_list">
|
||||
<field name="model">lims.typification.readonly</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">typification_readonly_list</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.act_window" id="act_lims_typification_readonly_list">
|
||||
<field name="name">Typifications</field>
|
||||
<field name="res_model">lims.typification.readonly</field>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_lims_typification_readonly_view_list">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="lims_typification_readonly_view_list"/>
|
||||
<field name="act_window" ref="act_lims_typification_readonly_list"/>
|
||||
</record>
|
||||
|
||||
<!-- Calculated Typification Read Only -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_typification_calculated_readonly_view_list">
|
||||
<field name="model">lims.typification.calculated.readonly</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">typification_calculated_readonly_list</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.act_window" id="act_lims_typification_calculated_readonly_list">
|
||||
<field name="name">Sets/Groups Typifications</field>
|
||||
<field name="res_model">lims.typification.calculated.readonly</field>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_lims_typification_calculated_readonly_view_list">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="lims_typification_calculated_readonly_view_list"/>
|
||||
<field name="act_window" ref="act_lims_typification_calculated_readonly_list"/>
|
||||
</record>
|
||||
|
||||
<!-- Product type -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_product_type_view_form">
|
||||
<field name="model">lims.product.type</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">product_type_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_product_type_view_list">
|
||||
<field name="model">lims.product.type</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">product_type_list</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.act_window" id="act_lims_product_type_list">
|
||||
<field name="name">Product types</field>
|
||||
<field name="res_model">lims.product.type</field>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_lims_product_type_view_list">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="lims_product_type_view_list"/>
|
||||
<field name="act_window" ref="act_lims_product_type_list"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_lims_product_type_view_form">
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="view" ref="lims_product_type_view_form"/>
|
||||
<field name="act_window" ref="act_lims_product_type_list"/>
|
||||
</record>
|
||||
|
||||
<!-- Matrix -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_matrix_view_form">
|
||||
<field name="model">lims.matrix</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">matrix_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_matrix_view_list">
|
||||
<field name="model">lims.matrix</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">matrix_list</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.act_window" id="act_lims_matrix_list">
|
||||
<field name="name">Matrix</field>
|
||||
<field name="res_model">lims.matrix</field>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_lims_matrix_view_list">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="lims_matrix_view_list"/>
|
||||
<field name="act_window" ref="act_lims_matrix_list"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_lims_matrix_view_form">
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="view" ref="lims_matrix_view_form"/>
|
||||
<field name="act_window" ref="act_lims_matrix_list"/>
|
||||
</record>
|
||||
|
||||
<!-- Formula -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_formula_view_form">
|
||||
<field name="model">lims.formula</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">formula_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_formula_view_list">
|
||||
<field name="model">lims.formula</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">formula_list</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.act_window" id="act_lims_formula_list">
|
||||
<field name="name">Formulas</field>
|
||||
<field name="res_model">lims.formula</field>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_lims_formula_view_list">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="lims_formula_view_list"/>
|
||||
<field name="act_window" ref="act_lims_formula_list"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_lims_formula_view_form">
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="view" ref="lims_formula_view_form"/>
|
||||
<field name="act_window" ref="act_lims_formula_list"/>
|
||||
</record>
|
||||
|
||||
<!-- Formula Variable -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_formula_variable_view_form">
|
||||
<field name="model">lims.formula.variable</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">formula_variable_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_formula_variable_view_list">
|
||||
<field name="model">lims.formula.variable</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">formula_variable_list</field>
|
||||
</record>
|
||||
|
||||
<!-- Analysis/Set/Group -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_analysis_view_form">
|
||||
<field name="model">lims.analysis</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">analysis_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_analysis_view_list">
|
||||
<field name="model">lims.analysis</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">analysis_list</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.act_window" id="act_lims_analysis_list">
|
||||
<field name="name">Analysis/Sets/Groups</field>
|
||||
<field name="res_model">lims.analysis</field>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_lims_analysis_view_list">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="lims_analysis_view_list"/>
|
||||
<field name="act_window" ref="act_lims_analysis_list"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_lims_analysis_view_form">
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="view" ref="lims_analysis_view_form"/>
|
||||
<field name="act_window" ref="act_lims_analysis_list"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.rule.group" id="rule_group_analysis_laboratory">
|
||||
<field name="model" search="[('model', '=', 'lims.analysis-laboratory')]"/>
|
||||
<field name="global_p" eval="True"/>
|
||||
</record>
|
||||
<record model="ir.rule" id="rule_analysis_laboratory">
|
||||
<field name="domain"
|
||||
eval="[If(Bool(Eval('user', {}).get('laboratory', False)), ('laboratory', '=', Eval('user', {}).get('laboratory', None)), If(Bool(Eval('user', {}).get('laboratories', False)), ('laboratory', 'in', Eval('user', {}).get('laboratories', [])), ('id', '!=', 0)))]"
|
||||
pyson="1"/>
|
||||
<field name="rule_group" ref="rule_group_analysis_laboratory"/>
|
||||
</record>
|
||||
|
||||
<!-- Included Analysis -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_analysis_included_view_form">
|
||||
<field name="model">lims.analysis.included</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">analysis_included_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_analysis_included_view_list">
|
||||
<field name="model">lims.analysis.included</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">analysis_included_list</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.rule.group" id="rule_group_analysis_included">
|
||||
<field name="model" search="[('model', '=', 'lims.analysis.included')]"/>
|
||||
<field name="global_p" eval="True"/>
|
||||
</record>
|
||||
<record model="ir.rule" id="rule_analysis_included">
|
||||
<field name="domain"
|
||||
eval="[If(Bool(Eval('user', {}).get('laboratory', False)), ('laboratory', '=', Eval('user', {}).get('laboratory', None)), If(Bool(Eval('user', {}).get('laboratories', False)), ('laboratory', 'in', Eval('user', {}).get('laboratories', [])), ('id', '!=', 0)))]"
|
||||
pyson="1"/>
|
||||
<field name="rule_group" ref="rule_group_analysis_included"/>
|
||||
</record>
|
||||
|
||||
<!-- Analysis Device -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_analysis_device_view_form">
|
||||
<field name="model">lims.analysis.device</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">analysis_device_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_analysis_device_view_list">
|
||||
<field name="model">lims.analysis.device</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">analysis_device_list</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.rule.group" id="rule_group_analysis_device">
|
||||
<field name="model" search="[('model', '=', 'lims.analysis.device')]"/>
|
||||
<field name="global_p" eval="True"/>
|
||||
</record>
|
||||
<record model="ir.rule" id="rule_analysis_device">
|
||||
<field name="domain"
|
||||
eval="[If(Bool(Eval('user', {}).get('laboratory', False)), ('laboratory', '=', Eval('user', {}).get('laboratory', None)), If(Bool(Eval('user', {}).get('laboratories', False)), ('laboratory', 'in', Eval('user', {}).get('laboratories', [])), ('id', '!=', 0)))]"
|
||||
pyson="1"/>
|
||||
<field name="rule_group" ref="rule_group_analysis_device"/>
|
||||
</record>
|
||||
|
||||
<!-- Analysis Laboratory -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_analysis_laboratory_view_form">
|
||||
<field name="model">lims.analysis-laboratory</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">analysis_laboratory_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_analysis_laboratory_view_list">
|
||||
<field name="model">lims.analysis-laboratory</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">analysis_laboratory_list</field>
|
||||
</record>
|
||||
|
||||
<!-- Typification actions related -->
|
||||
|
||||
<record model="ir.action.act_window" id="act_lims_technical_scope_version_line_related1">
|
||||
<field name="name">Technical Scope Version Lines</field>
|
||||
<field name="res_model">lims.technical.scope.version.line</field>
|
||||
<field name="domain" eval="[('typification', 'in', Eval('active_ids'))]" pyson="1"/>
|
||||
</record>
|
||||
<record model="ir.action.keyword" id="act_open_technical_scope_version_line_keyword1">
|
||||
<field name="keyword">form_relate</field>
|
||||
<field name="model">lims.typification,-1</field>
|
||||
<field name="action" ref="act_lims_technical_scope_version_line_related1"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.act_window" id="act_lims_technical_scope_version_related1">
|
||||
<field name="name">Technical Scope Versions</field>
|
||||
<field name="res_model">lims.technical.scope.version</field>
|
||||
<field name="domain" eval="[('version_lines.id', 'in', Eval('active_ids', []))]" pyson="1"/>
|
||||
</record>
|
||||
<record model="ir.action.keyword" id="act_open_technical_scope_version_keyword1">
|
||||
<field name="keyword">form_relate</field>
|
||||
<field name="model">lims.typification,-1</field>
|
||||
<field name="action" ref="act_lims_technical_scope_version_related1"/>
|
||||
</record>
|
||||
|
||||
<!-- Wizard Copy/Move Typification -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_copy_typification_start_view_form">
|
||||
<field name="model">lims.typification.copy.start</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">typification_copy_form</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.wizard" id="wiz_lims_copy_typification">
|
||||
<field name="name">Copy/Move Typification</field>
|
||||
<field name="wiz_name">lims.typification.copy</field>
|
||||
</record>
|
||||
<record model="ir.action.keyword" id="lims_copy_typification_keyword">
|
||||
<field name="keyword">form_action</field>
|
||||
<field name="model">lims.typification,-1</field>
|
||||
<field name="action" ref="wiz_lims_copy_typification"/>
|
||||
</record>
|
||||
|
||||
<!-- Wizard Copy Calculated Typification -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_copy_calculated_typification_start_view_form">
|
||||
<field name="model">lims.typification.calculated.copy.start</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">typification_calculated_copy_form</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.wizard" id="wiz_lims_copy_calculated_typification">
|
||||
<field name="name">Copy Typification</field>
|
||||
<field name="wiz_name">lims.typification.calculated.copy</field>
|
||||
</record>
|
||||
<record model="ir.action.keyword" id="lims_copy_calculated_typification_keyword">
|
||||
<field name="keyword">form_action</field>
|
||||
<field name="model">lims.typification.calculated.readonly,-1</field>
|
||||
<field name="action" ref="wiz_lims_copy_calculated_typification"/>
|
||||
</record>
|
||||
|
||||
<!-- Wizard Relate Analysis -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_relate_analysis_start_view_form">
|
||||
<field name="model">lims.relate_analysis.start</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">analysis_relate_analysis_form</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.wizard" id="wiz_lims_relate_analysis">
|
||||
<field name="name">Relate Analysis</field>
|
||||
<field name="wiz_name">lims.relate_analysis</field>
|
||||
</record>
|
||||
|
||||
<!-- Wizard Create Analysis Product -->
|
||||
|
||||
<record model="ir.action.wizard" id="wiz_lims_create_analysis_product">
|
||||
<field name="name">Create Analysis Product</field>
|
||||
<field name="wiz_name">lims.create_analysis_product</field>
|
||||
</record>
|
||||
<record model="ir.action.keyword" id="lims_create_analysis_product_keyword">
|
||||
<field name="keyword">form_action</field>
|
||||
<field name="model">lims.analysis,-1</field>
|
||||
<field name="action" ref="wiz_lims_create_analysis_product"/>
|
||||
</record>
|
||||
|
||||
<!-- Wizard Open Typifications -->
|
||||
|
||||
<record model="ir.action.wizard" id="act_open_typifications">
|
||||
<field name="name">Typifications</field>
|
||||
<field name="wiz_name">lims.scope_version.open_typifications</field>
|
||||
<field name="model">lims.technical.scope.version</field>
|
||||
</record>
|
||||
|
||||
<!-- Wizard Add Typifications -->
|
||||
|
||||
<record model="ir.ui.view" id="scope_version_add_typifications_start_view_form">
|
||||
<field name="model">lims.scope_version.add_typifications.start</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">scope_version_add_typifications_start_form</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.wizard" id="act_add_typifications">
|
||||
<field name="name">Add Typifications</field>
|
||||
<field name="wiz_name">lims.scope_version.add_typifications</field>
|
||||
<field name="model">lims.technical.scope.version</field>
|
||||
</record>
|
||||
|
||||
<!-- Wizard Remove Typifications -->
|
||||
|
||||
<record model="ir.ui.view" id="scope_version_remove_typifications_start_view_form">
|
||||
<field name="model">lims.scope_version.remove_typifications.start</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">scope_version_remove_typifications_start_form</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.wizard" id="act_remove_typifications">
|
||||
<field name="name">Remove Typifications</field>
|
||||
<field name="wiz_name">lims.scope_version.remove_typifications</field>
|
||||
<field name="model">lims.technical.scope.version</field>
|
||||
</record>
|
||||
|
||||
<menuitem parent="lims_config_base_tables" action="act_lims_product_type_list"
|
||||
id="lims_product_type_menu" sequence="10"/>
|
||||
<menuitem parent="lims_config_base_tables" action="act_lims_matrix_list"
|
||||
id="lims_matrix_menu" sequence="20"/>
|
||||
<menuitem parent="lims_config_base_tables" action="act_lims_lab_method_list"
|
||||
id="lims_lab_method_menu" sequence="30"/>
|
||||
<menuitem parent="lims_config_base_tables" action="act_lims_formula_list"
|
||||
id="lims_formula_list_menu" sequence="40"/>
|
||||
<menuitem parent="lims_config_base_tables" action="act_lims_analysis_list"
|
||||
id="lims_analysis_menu" sequence="50"/>
|
||||
<menuitem parent="lims_config_base_tables" action="act_lims_typification_list"
|
||||
id="lims_typification_menu" sequence="60"/>
|
||||
<menuitem parent="lims_typification_menu" action="act_lims_typification_calculated_readonly_list"
|
||||
id="lims_typification_calculated_menu" sequence="10"/>
|
||||
|
||||
<record model="ir.model.access" id="access_product_type">
|
||||
<field name="model" search="[('model', '=', 'lims.product.type')]"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
<field name="perm_create" eval="False"/>
|
||||
<field name="perm_delete" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.access" id="access_product_type_group_conf_base_tables_admin">
|
||||
<field name="model" search="[('model', '=', 'lims.product.type')]"/>
|
||||
<field name="group" ref="group_lims_conf_base_tables_admin"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
<field name="perm_create" eval="True"/>
|
||||
<field name="perm_delete" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.access" id="access_matrix">
|
||||
<field name="model" search="[('model', '=', 'lims.matrix')]"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
<field name="perm_create" eval="False"/>
|
||||
<field name="perm_delete" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.access" id="access_matrix_group_conf_base_tables_admin">
|
||||
<field name="model" search="[('model', '=', 'lims.matrix')]"/>
|
||||
<field name="group" ref="group_lims_conf_base_tables_admin"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
<field name="perm_create" eval="True"/>
|
||||
<field name="perm_delete" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.access" id="access_formula">
|
||||
<field name="model" search="[('model', '=', 'lims.formula')]"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
<field name="perm_create" eval="False"/>
|
||||
<field name="perm_delete" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.access" id="access_formula_group_conf_base_tables_admin">
|
||||
<field name="model" search="[('model', '=', 'lims.formula')]"/>
|
||||
<field name="group" ref="group_lims_conf_base_tables_admin"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
<field name="perm_create" eval="True"/>
|
||||
<field name="perm_delete" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.access" id="access_analysis">
|
||||
<field name="model" search="[('model', '=', 'lims.analysis')]"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
<field name="perm_create" eval="False"/>
|
||||
<field name="perm_delete" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.access" id="access_analysis_group_conf_base_tables_admin">
|
||||
<field name="model" search="[('model', '=', 'lims.analysis')]"/>
|
||||
<field name="group" ref="group_lims_conf_base_tables_admin"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
<field name="perm_create" eval="True"/>
|
||||
<field name="perm_delete" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.access" id="access_typification">
|
||||
<field name="model" search="[('model', '=', 'lims.typification')]"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
<field name="perm_create" eval="False"/>
|
||||
<field name="perm_delete" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.access" id="access_typification_group_conf_base_tables_admin">
|
||||
<field name="model" search="[('model', '=', 'lims.typification')]"/>
|
||||
<field name="group" ref="group_lims_conf_base_tables_admin"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
<field name="perm_create" eval="True"/>
|
||||
<field name="perm_delete" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.access" id="access_typification_readonly">
|
||||
<field name="model" search="[('model', '=', 'lims.typification.readonly')]"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
<field name="perm_create" eval="False"/>
|
||||
<field name="perm_delete" eval="False"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.access" id="access_typification_calculated_readonly">
|
||||
<field name="model" search="[('model', '=', 'lims.typification.calculated.readonly')]"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
<field name="perm_create" eval="False"/>
|
||||
<field name="perm_delete" eval="False"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.button" id="analysis_disable_button">
|
||||
<field name="name">disable</field>
|
||||
<field name="model" search="[('model', '=', 'lims.analysis')]"/>
|
||||
</record>
|
||||
<record model="ir.model.button-res.group" id="analysis_disable_button_group_admin">
|
||||
<field name="button" ref="analysis_disable_button"/>
|
||||
<field name="group" ref="res.group_admin"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.button" id="analysis_activate_button">
|
||||
<field name="name">activate</field>
|
||||
<field name="model" search="[('model', '=', 'lims.analysis')]"/>
|
||||
</record>
|
||||
<record model="ir.model.button-res.group" id="analysis_activate_button_group_group_lims_conf_base_tables_admin">
|
||||
<field name="button" ref="analysis_activate_button"/>
|
||||
<field name="group" ref="group_lims_conf_base_tables_admin"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.button" id="analysis_relate_analysis_button">
|
||||
<field name="name">relate_analysis</field>
|
||||
<field name="model" search="[('model', '=', 'lims.analysis')]"/>
|
||||
</record>
|
||||
<record model="ir.model.button-res.group" id="analysis_relate_analysis_button_group_group_lims_conf_base_tables_admin">
|
||||
<field name="button" ref="analysis_relate_analysis_button"/>
|
||||
<field name="group" ref="group_lims_conf_base_tables_admin"/>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</tryton>
|
|
@ -0,0 +1,235 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# This file is part of lims module for Tryton.
|
||||
# The COPYRIGHT file at the top level of this repository contains
|
||||
# the full copyright notices and license terms.
|
||||
from trytond.model import ModelView, ModelSQL, fields, Unique
|
||||
from trytond.wizard import Wizard, StateTransition, StateView, Button
|
||||
from trytond.pyson import Eval
|
||||
from trytond.pool import Pool
|
||||
from trytond.transaction import Transaction
|
||||
|
||||
__all__ = ['CertificationType', 'TechnicalScope', 'TechnicalScopeVersion',
|
||||
'TechnicalScopeVersionLine', 'AnalysisFamily', 'AnalysisFamilyCertificant',
|
||||
'DuplicateAnalysisFamilyStart', 'DuplicateAnalysisFamily']
|
||||
|
||||
|
||||
class CertificationType(ModelSQL, ModelView):
|
||||
'Certification Type'
|
||||
__name__ = 'lims.certification.type'
|
||||
_rec_name = 'description'
|
||||
|
||||
code = fields.Char('Code', required=True)
|
||||
description = fields.Char('Description', required=True)
|
||||
report = fields.Boolean('Report')
|
||||
|
||||
def get_rec_name(self, name):
|
||||
if self.code:
|
||||
return self.code + ' - ' + self.description
|
||||
else:
|
||||
return self.description
|
||||
|
||||
@classmethod
|
||||
def search_rec_name(cls, name, clause):
|
||||
field = None
|
||||
for field in ('code', 'description'):
|
||||
records = cls.search([(field,) + tuple(clause[1:])], limit=1)
|
||||
if records:
|
||||
break
|
||||
if records:
|
||||
return [(field,) + tuple(clause[1:])]
|
||||
return [(cls._rec_name,) + tuple(clause[1:])]
|
||||
|
||||
|
||||
class TechnicalScope(ModelSQL, ModelView):
|
||||
'Technical Scope'
|
||||
__name__ = 'lims.technical.scope'
|
||||
|
||||
party = fields.Many2One('party.party', 'Party', required=True)
|
||||
certification_type = fields.Many2One('lims.certification.type',
|
||||
'Certification type')
|
||||
versions = fields.One2Many('lims.technical.scope.version',
|
||||
'technical_scope', 'Versions')
|
||||
|
||||
def get_rec_name(self, name):
|
||||
if self.party:
|
||||
return self.party.rec_name
|
||||
|
||||
@classmethod
|
||||
def search_rec_name(cls, name, clause):
|
||||
return [('party',) + tuple(clause[1:])]
|
||||
|
||||
|
||||
class TechnicalScopeVersion(ModelSQL, ModelView):
|
||||
'Technical Scope Version'
|
||||
__name__ = 'lims.technical.scope.version'
|
||||
_rec_name = 'number'
|
||||
|
||||
technical_scope = fields.Many2One('lims.technical.scope',
|
||||
'Technical scope', required=True)
|
||||
number = fields.Char('Number', required=True)
|
||||
date = fields.Date('Date', required=True)
|
||||
expiration_date = fields.Date('Expiration date')
|
||||
version_lines = fields.Many2Many('lims.technical.scope.version.line',
|
||||
'version', 'typification', 'Typifications')
|
||||
valid = fields.Boolean('Active')
|
||||
|
||||
@classmethod
|
||||
def __setup__(cls):
|
||||
super(TechnicalScopeVersion, cls).__setup__()
|
||||
cls._error_messages.update({
|
||||
'active_version': ('Only one version can be active for each '
|
||||
'technical scope'),
|
||||
})
|
||||
cls._buttons.update({
|
||||
'open_typifications': {},
|
||||
'add_typifications': {
|
||||
'invisible': ~Eval('valid'),
|
||||
},
|
||||
'remove_typifications': {
|
||||
'invisible': ~Eval('valid'),
|
||||
},
|
||||
})
|
||||
|
||||
@staticmethod
|
||||
def default_valid():
|
||||
return True
|
||||
|
||||
@classmethod
|
||||
def validate(cls, versions):
|
||||
super(TechnicalScopeVersion, cls).validate(versions)
|
||||
for version in versions:
|
||||
version.check_active()
|
||||
|
||||
def check_active(self):
|
||||
if self.valid:
|
||||
versions = self.search([
|
||||
('technical_scope', '=', self.technical_scope.id),
|
||||
('valid', '=', True),
|
||||
('id', '!=', self.id),
|
||||
])
|
||||
if versions:
|
||||
self.raise_user_error('active_version')
|
||||
|
||||
@classmethod
|
||||
@ModelView.button_action('lims.act_open_typifications')
|
||||
def open_typifications(cls, versions):
|
||||
pass
|
||||
|
||||
@classmethod
|
||||
@ModelView.button_action('lims.act_add_typifications')
|
||||
def add_typifications(cls, versions):
|
||||
pass
|
||||
|
||||
@classmethod
|
||||
@ModelView.button_action('lims.act_remove_typifications')
|
||||
def remove_typifications(cls, versions):
|
||||
pass
|
||||
|
||||
|
||||
class TechnicalScopeVersionLine(ModelSQL):
|
||||
'Technical Scope Version Line'
|
||||
__name__ = 'lims.technical.scope.version.line'
|
||||
|
||||
version = fields.Many2One('lims.technical.scope.version',
|
||||
'Technical scope version', ondelete='CASCADE', select=True,
|
||||
required=True)
|
||||
typification = fields.Many2One('lims.typification', 'Typification',
|
||||
ondelete='CASCADE', select=True, required=True)
|
||||
|
||||
|
||||
class AnalysisFamily(ModelSQL, ModelView):
|
||||
'Analysis Family'
|
||||
__name__ = 'lims.analysis.family'
|
||||
_rec_name = 'description'
|
||||
|
||||
code = fields.Char('Code', required=True)
|
||||
description = fields.Char('Description', required=True)
|
||||
party = fields.Many2One('party.party', 'Certificant party')
|
||||
certificants = fields.One2Many('lims.analysis.family.certificant',
|
||||
'family', 'Product Type - Matrix')
|
||||
|
||||
@classmethod
|
||||
def __setup__(cls):
|
||||
super(AnalysisFamily, cls).__setup__()
|
||||
t = cls.__table__()
|
||||
cls._sql_constraints += [
|
||||
('code_uniq', Unique(t, t.code),
|
||||
'Analysis family code must be unique'),
|
||||
]
|
||||
|
||||
def get_rec_name(self, name):
|
||||
if self.code:
|
||||
return self.code + ' - ' + self.description
|
||||
else:
|
||||
return self.description
|
||||
|
||||
@classmethod
|
||||
def search_rec_name(cls, name, clause):
|
||||
field = None
|
||||
for field in ('code', 'description'):
|
||||
records = cls.search([(field,) + tuple(clause[1:])], limit=1)
|
||||
if records:
|
||||
break
|
||||
if records:
|
||||
return [(field,) + tuple(clause[1:])]
|
||||
return [(cls._rec_name,) + tuple(clause[1:])]
|
||||
|
||||
|
||||
class AnalysisFamilyCertificant(ModelSQL, ModelView):
|
||||
'Product Type - Matrix'
|
||||
__name__ = 'lims.analysis.family.certificant'
|
||||
|
||||
family = fields.Many2One('lims.analysis.family', 'Family', required=True)
|
||||
product_type = fields.Many2One('lims.product.type', 'Product type',
|
||||
required=True)
|
||||
matrix = fields.Many2One('lims.matrix', 'Matrix', required=True)
|
||||
|
||||
@classmethod
|
||||
def __setup__(cls):
|
||||
super(AnalysisFamilyCertificant, cls).__setup__()
|
||||
t = cls.__table__()
|
||||
cls._sql_constraints += [
|
||||
('product_matrix_uniq',
|
||||
Unique(t, t.family, t.product_type, t.matrix),
|
||||
'This record already exists'),
|
||||
]
|
||||
|
||||
|
||||
class DuplicateAnalysisFamilyStart(ModelView):
|
||||
'Duplicate Analysis Family'
|
||||
__name__ = 'lims.analysis.family.duplicate.start'
|
||||
|
||||
family_origin = fields.Many2One('lims.analysis.family', 'Family Origin')
|
||||
code = fields.Char('Code', required=True)
|
||||
description = fields.Char('Description', required=True)
|
||||
party = fields.Many2One('party.party', 'Certificant party')
|
||||
|
||||
|
||||
class DuplicateAnalysisFamily(Wizard):
|
||||
'Duplicate Analysis Family'
|
||||
__name__ = 'lims.analysis.family.duplicate'
|
||||
|
||||
start = StateView('lims.analysis.family.duplicate.start',
|
||||
'lims.lims_duplicate_analysis_family_start_view_form', [
|
||||
Button('Cancel', 'end', 'tryton-cancel'),
|
||||
Button('Duplicate', 'duplicate', 'tryton-ok', default=True),
|
||||
])
|
||||
duplicate = StateTransition()
|
||||
|
||||
def default_start(self, fields):
|
||||
AnalysisFamily = Pool().get('lims.analysis.family')
|
||||
family_origin = AnalysisFamily(Transaction().context['active_id'])
|
||||
return {
|
||||
'family_origin': family_origin.id,
|
||||
'code': family_origin.code,
|
||||
'description': family_origin.description,
|
||||
}
|
||||
|
||||
def transition_duplicate(self):
|
||||
AnalysisFamily = Pool().get('lims.analysis.family')
|
||||
AnalysisFamily.copy([self.start.family_origin], default={
|
||||
'code': self.start.code,
|
||||
'description': self.start.description,
|
||||
'party': self.start.party.id if self.start.party else None,
|
||||
})
|
||||
return 'end'
|
|
@ -0,0 +1,294 @@
|
|||
<?xml version="1.0"?>
|
||||
<tryton>
|
||||
<data>
|
||||
|
||||
<!-- Certification Type -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_certification_type_view_form">
|
||||
<field name="model">lims.certification.type</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">certification_type_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_certification_type_view_list">
|
||||
<field name="model">lims.certification.type</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">certification_type_list</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.act_window" id="act_lims_certification_type_list">
|
||||
<field name="name">Certification Type</field>
|
||||
<field name="res_model">lims.certification.type</field>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_lims_certification_type_view_list">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="lims_certification_type_view_list"/>
|
||||
<field name="act_window" ref="act_lims_certification_type_list"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_lims_certification_type_view_form">
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="view" ref="lims_certification_type_view_form"/>
|
||||
<field name="act_window" ref="act_lims_certification_type_list"/>
|
||||
</record>
|
||||
|
||||
<!-- Technical Scope -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_technical_scope_view_form">
|
||||
<field name="model">lims.technical.scope</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">technical_scope_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_technical_scope_view_list">
|
||||
<field name="model">lims.technical.scope</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">technical_scope_list</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.act_window" id="act_lims_technical_scope_list">
|
||||
<field name="name">Technical Scopes</field>
|
||||
<field name="res_model">lims.technical.scope</field>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_lims_technical_scope_view_list">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="lims_technical_scope_view_list"/>
|
||||
<field name="act_window" ref="act_lims_technical_scope_list"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_lims_technical_scope_view_form">
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="view" ref="lims_technical_scope_view_form"/>
|
||||
<field name="act_window" ref="act_lims_technical_scope_list"/>
|
||||
</record>
|
||||
|
||||
<!-- Technical Scope Version -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_technical_scope_version_view_form">
|
||||
<field name="model">lims.technical.scope.version</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">technical_scope_version_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_technical_scope_version_view_list">
|
||||
<field name="model">lims.technical.scope.version</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">technical_scope_version_list</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.act_window" id="act_lims_technical_scope_version_list">
|
||||
<field name="name">Technical Scope Versions</field>
|
||||
<field name="res_model">lims.technical.scope.version</field>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_lims_technical_scope_version_view_list">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="lims_technical_scope_version_view_list"/>
|
||||
<field name="act_window" ref="act_lims_technical_scope_version_list"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_lims_technical_scope_version_view_form">
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="view" ref="lims_technical_scope_version_view_form"/>
|
||||
<field name="act_window" ref="act_lims_technical_scope_version_list"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.button" id="technical_scope_version_open_typifications_button">
|
||||
<field name="name">open_typifications</field>
|
||||
<field name="model" search="[('model', '=', 'lims.technical.scope.version')]"/>
|
||||
</record>
|
||||
<record model="ir.model.button-res.group" id="technical_scope_version_open_typifications_button_group_lims_conf_certification_admin">
|
||||
<field name="button" ref="technical_scope_version_open_typifications_button"/>
|
||||
<field name="group" ref="group_lims_conf_certification_admin"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.button" id="technical_scope_version_add_typifications_button">
|
||||
<field name="name">add_typifications</field>
|
||||
<field name="model" search="[('model', '=', 'lims.technical.scope.version')]"/>
|
||||
</record>
|
||||
<record model="ir.model.button-res.group" id="technical_scope_version_add_typifications_button_group_lims_conf_certification_admin">
|
||||
<field name="button" ref="technical_scope_version_add_typifications_button"/>
|
||||
<field name="group" ref="group_lims_conf_certification_admin"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.button" id="technical_scope_version_remove_typifications_button">
|
||||
<field name="name">remove_typifications</field>
|
||||
<field name="model" search="[('model', '=', 'lims.technical.scope.version')]"/>
|
||||
</record>
|
||||
<record model="ir.model.button-res.group" id="technical_scope_version_remove_typifications_button_group_lims_conf_certification_admin">
|
||||
<field name="button" ref="technical_scope_version_remove_typifications_button"/>
|
||||
<field name="group" ref="group_lims_conf_certification_admin"/>
|
||||
</record>
|
||||
|
||||
<!-- Analysis Family -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_analysis_family_view_form">
|
||||
<field name="model">lims.analysis.family</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">analysis_family_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_analysis_family_view_list">
|
||||
<field name="model">lims.analysis.family</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">analysis_family_list</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.act_window" id="act_lims_analysis_family_list">
|
||||
<field name="name">Analysis Families</field>
|
||||
<field name="res_model">lims.analysis.family</field>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_lims_analysis_family_view_list">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="lims_analysis_family_view_list"/>
|
||||
<field name="act_window" ref="act_lims_analysis_family_list"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_lims_analysis_family_view_form">
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="view" ref="lims_analysis_family_view_form"/>
|
||||
<field name="act_window" ref="act_lims_analysis_family_list"/>
|
||||
</record>
|
||||
|
||||
<!-- Analysis Family Certificant -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_analysis_family_certificant_view_form">
|
||||
<field name="model">lims.analysis.family.certificant</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">analysis_family_certificant_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_analysis_family_certificant_view_list">
|
||||
<field name="model">lims.analysis.family.certificant</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">analysis_family_certificant_list</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.act_window" id="act_lims_analysis_family_certificant_list">
|
||||
<field name="name">Certificant Party - Product Type - Matrix</field>
|
||||
<field name="res_model">lims.analysis.family.certificant</field>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_lims_analysis_family_certificant_view_list">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="lims_analysis_family_certificant_view_list"/>
|
||||
<field name="act_window" ref="act_lims_analysis_family_certificant_list"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_lims_analysis_family_certificant_view_form">
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="view" ref="lims_analysis_family_certificant_view_form"/>
|
||||
<field name="act_window" ref="act_lims_analysis_family_certificant_list"/>
|
||||
</record>
|
||||
|
||||
<!-- Wizard Duplicate Analysis Family -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_duplicate_analysis_family_start_view_form">
|
||||
<field name="model">lims.analysis.family.duplicate.start</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">analysis_family_duplicate_form</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.wizard" id="wiz_lims_duplicate_analysis_family">
|
||||
<field name="name">Duplicate Analysis Family</field>
|
||||
<field name="wiz_name">lims.analysis.family.duplicate</field>
|
||||
</record>
|
||||
<record model="ir.action.keyword" id="lims_duplicate_analysis_family_keyword">
|
||||
<field name="keyword">form_action</field>
|
||||
<field name="model">lims.analysis.family,-1</field>
|
||||
<field name="action" ref="wiz_lims_duplicate_analysis_family"/>
|
||||
</record>
|
||||
|
||||
<!-- Configuration / Certification -->
|
||||
<menuitem name="Certification" parent="lims_config"
|
||||
id="lims_config_certification" sequence="20"/>
|
||||
<menuitem parent="lims_config_certification" action="act_lims_certification_type_list"
|
||||
id="lims_certification_type_list_menu" sequence="10"/>
|
||||
<menuitem parent="lims_config_certification" action="act_lims_analysis_family_list"
|
||||
id="lims_analysis_family_menu" sequence="20"/>
|
||||
<menuitem parent="lims_config_certification" action="act_lims_technical_scope_list"
|
||||
id="lims_technical_scope_menu" sequence="30"/>
|
||||
<menuitem parent="lims_technical_scope_menu" action="act_lims_technical_scope_version_list"
|
||||
id="lims_technical_scope_version_menu" sequence="10"/>
|
||||
|
||||
<record model="ir.model.access" id="access_certification_type">
|
||||
<field name="model" search="[('model', '=', 'lims.certification.type')]"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
<field name="perm_create" eval="False"/>
|
||||
<field name="perm_delete" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.access" id="access_certification_type_group_conf_certification_admin">
|
||||
<field name="model" search="[('model', '=', 'lims.certification.type')]"/>
|
||||
<field name="group" ref="group_lims_conf_certification_admin"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
<field name="perm_create" eval="True"/>
|
||||
<field name="perm_delete" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.access" id="access_analysis_family">
|
||||
<field name="model" search="[('model', '=', 'lims.analysis.family')]"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
<field name="perm_create" eval="False"/>
|
||||
<field name="perm_delete" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.access" id="access_analysis_family_group_conf_certification_admin">
|
||||
<field name="model" search="[('model', '=', 'lims.analysis.family')]"/>
|
||||
<field name="group" ref="group_lims_conf_certification_admin"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
<field name="perm_create" eval="True"/>
|
||||
<field name="perm_delete" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.access" id="access_technical_scope">
|
||||
<field name="model" search="[('model', '=', 'lims.technical.scope')]"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
<field name="perm_create" eval="False"/>
|
||||
<field name="perm_delete" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.access" id="access_technical_scope_group_conf_certification_admin">
|
||||
<field name="model" search="[('model', '=', 'lims.technical.scope')]"/>
|
||||
<field name="group" ref="group_lims_conf_certification_admin"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
<field name="perm_create" eval="True"/>
|
||||
<field name="perm_delete" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.access" id="access_technical_scope_version">
|
||||
<field name="model" search="[('model', '=', 'lims.technical.scope.version')]"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
<field name="perm_create" eval="False"/>
|
||||
<field name="perm_delete" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.access" id="access_technical_scope_version_group_conf_certification_admin">
|
||||
<field name="model" search="[('model', '=', 'lims.technical.scope.version')]"/>
|
||||
<field name="group" ref="group_lims_conf_certification_admin"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
<field name="perm_create" eval="True"/>
|
||||
<field name="perm_delete" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.menu-res.group" id="menu_lims_group_conf_certification_readonly">
|
||||
<field name="menu" ref="lims_menu"/>
|
||||
<field name="group" ref="group_lims_conf_certification_readonly"/>
|
||||
</record>
|
||||
<record model="ir.ui.menu-res.group" id="menu_lims_group_conf_certification_admin">
|
||||
<field name="menu" ref="lims_menu"/>
|
||||
<field name="group" ref="group_lims_conf_certification_admin"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.menu-res.group" id="menu_config_group_conf_certification_readonly">
|
||||
<field name="menu" ref="lims_config"/>
|
||||
<field name="group" ref="group_lims_conf_certification_readonly"/>
|
||||
</record>
|
||||
<record model="ir.ui.menu-res.group" id="menu_config_group_conf_certification_admin">
|
||||
<field name="menu" ref="lims_config"/>
|
||||
<field name="group" ref="group_lims_conf_certification_admin"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.menu-res.group" id="menu_config_certification_group_conf_certification_readonly">
|
||||
<field name="menu" ref="lims_config_certification"/>
|
||||
<field name="group" ref="group_lims_conf_certification_readonly"/>
|
||||
</record>
|
||||
<record model="ir.ui.menu-res.group" id="menu_config_certification_group_conf_certification_admin">
|
||||
<field name="menu" ref="lims_config_certification"/>
|
||||
<field name="group" ref="group_lims_conf_certification_admin"/>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</tryton>
|
|
@ -3,30 +3,23 @@
|
|||
# The COPYRIGHT file at the top level of this repository contains
|
||||
# the full copyright notices and license terms.
|
||||
|
||||
from trytond import backend
|
||||
from trytond.model import ModelSingleton, ModelView, ModelSQL, fields
|
||||
from trytond.pyson import Eval
|
||||
from trytond.transaction import Transaction
|
||||
from trytond.pool import Pool, PoolMeta
|
||||
from trytond.tools.multivalue import migrate_property
|
||||
from trytond.modules.company.model import (
|
||||
CompanyMultiValueMixin, CompanyValueMixin)
|
||||
|
||||
__all__ = ['LimsLaboratory2', 'LimsNotebookView', 'LimsNotebookViewColumn',
|
||||
'LimsUserRole', 'LimsUserRoleGroup', 'LimsPrinter', 'User',
|
||||
'LimsUserLaboratory', 'LimsConfiguration', 'LimsConfigurationLaboratory',
|
||||
'LimsLabWorkYear', 'LimsLabWorkYearSequence']
|
||||
__all__ = ['NotebookView', 'NotebookViewColumn', 'UserRole', 'UserRoleGroup',
|
||||
'Printer', 'User', 'UserLaboratory', 'Configuration',
|
||||
'ConfigurationLaboratory', 'ConfigurationSequence',
|
||||
'ConfigurationProductCategory', 'LabWorkYear', 'LabWorkYearSequence']
|
||||
sequence_names = [
|
||||
'entry_sequence', 'sample_sequence', 'service_sequence',
|
||||
'results_report_sequence']
|
||||
|
||||
|
||||
class LimsLaboratory2(ModelSQL):
|
||||
'Laboratory'
|
||||
__name__ = 'lims.laboratory'
|
||||
|
||||
|
||||
class LimsNotebookView(ModelSQL, ModelView):
|
||||
class NotebookView(ModelSQL, ModelView):
|
||||
'Laboratory Notebook View'
|
||||
__name__ = 'lims.notebook.view'
|
||||
|
||||
|
@ -35,7 +28,7 @@ class LimsNotebookView(ModelSQL, ModelView):
|
|||
required=True)
|
||||
|
||||
|
||||
class LimsNotebookViewColumn(ModelSQL, ModelView):
|
||||
class NotebookViewColumn(ModelSQL, ModelView):
|
||||
'Laboratory Notebook View Column'
|
||||
__name__ = 'lims.notebook.view.column'
|
||||
|
||||
|
@ -47,11 +40,11 @@ class LimsNotebookViewColumn(ModelSQL, ModelView):
|
|||
|
||||
@classmethod
|
||||
def __setup__(cls):
|
||||
super(LimsNotebookViewColumn, cls).__setup__()
|
||||
super(NotebookViewColumn, cls).__setup__()
|
||||
cls._order.insert(0, ('sequence', 'ASC'))
|
||||
|
||||
|
||||
class LimsUserRole(ModelSQL, ModelView):
|
||||
class UserRole(ModelSQL, ModelView):
|
||||
'User Role'
|
||||
__name__ = 'lims.user.role'
|
||||
|
||||
|
@ -60,7 +53,7 @@ class LimsUserRole(ModelSQL, ModelView):
|
|||
'role', 'group', 'Groups')
|
||||
|
||||
|
||||
class LimsUserRoleGroup(ModelSQL):
|
||||
class UserRoleGroup(ModelSQL):
|
||||
'User Role - Group'
|
||||
__name__ = 'lims.user.role-res.group'
|
||||
|
||||
|
@ -71,7 +64,7 @@ class LimsUserRoleGroup(ModelSQL):
|
|||
|
||||
@classmethod
|
||||
def create(cls, vlist):
|
||||
role_groups = super(LimsUserRoleGroup, cls).create(vlist)
|
||||
role_groups = super(UserRoleGroup, cls).create(vlist)
|
||||
cls._create_user_groups(role_groups)
|
||||
return role_groups
|
||||
|
||||
|
@ -98,7 +91,7 @@ class LimsUserRoleGroup(ModelSQL):
|
|||
@classmethod
|
||||
def delete(cls, role_groups):
|
||||
cls._delete_user_groups(role_groups)
|
||||
super(LimsUserRoleGroup, cls).delete(role_groups)
|
||||
super(UserRoleGroup, cls).delete(role_groups)
|
||||
|
||||
@classmethod
|
||||
def _delete_user_groups(cls, role_groups):
|
||||
|
@ -119,7 +112,7 @@ class LimsUserRoleGroup(ModelSQL):
|
|||
UserGroup.delete(user_groups)
|
||||
|
||||
|
||||
class LimsPrinter(ModelSQL, ModelView):
|
||||
class Printer(ModelSQL, ModelView):
|
||||
'Printer'
|
||||
__name__ = 'lims.printer'
|
||||
|
||||
|
@ -137,6 +130,7 @@ class User:
|
|||
laboratory = fields.Many2One('lims.laboratory', 'Main Laboratory',
|
||||
domain=[('id', 'in', Eval('laboratories'))], depends=['laboratories'])
|
||||
printer = fields.Many2One('lims.printer', 'Printer')
|
||||
departments = fields.One2Many('user.department', 'user', 'Departments')
|
||||
|
||||
@classmethod
|
||||
def __setup__(cls):
|
||||
|
@ -222,7 +216,7 @@ class User:
|
|||
return status
|
||||
|
||||
|
||||
class LimsUserLaboratory(ModelSQL):
|
||||
class UserLaboratory(ModelSQL):
|
||||
'User - Laboratory'
|
||||
__name__ = 'lims.user-laboratory'
|
||||
|
||||
|
@ -232,7 +226,8 @@ class LimsUserLaboratory(ModelSQL):
|
|||
ondelete='CASCADE', select=True, required=True)
|
||||
|
||||
|
||||
class LimsConfiguration(ModelSingleton, ModelSQL, ModelView):
|
||||
class Configuration(ModelSingleton, ModelSQL, ModelView,
|
||||
CompanyMultiValueMixin):
|
||||
'Configuration'
|
||||
__name__ = 'lims.configuration'
|
||||
|
||||
|
@ -253,13 +248,46 @@ class LimsConfiguration(ModelSingleton, ModelSQL, ModelView):
|
|||
soluble_solids_digits = fields.Integer('Soluble solids digits')
|
||||
rm_start_uom = fields.Many2One('product.uom', 'RM Start UoM',
|
||||
domain=[('category.lims_only_available', '=', True)])
|
||||
invoice_party_relation_type = fields.Many2One('party.relation.type',
|
||||
'Invoice Party Relation Type')
|
||||
email_qa = fields.Char('QA Email')
|
||||
analysis_product_category = fields.Many2One('product.category',
|
||||
'Analysis Product Category', states={'required': True})
|
||||
entry_confirm_background = fields.Boolean(
|
||||
'Confirm Entries in Background')
|
||||
planification_sequence = fields.MultiValue(fields.Many2One(
|
||||
'ir.sequence', 'Planification Sequence', required=True,
|
||||
domain=[
|
||||
('company', 'in',
|
||||
[Eval('context', {}).get('company', -1), None]),
|
||||
('code', '=', 'lims.planification'),
|
||||
]))
|
||||
mcl_fraction_type = fields.Many2One('lims.fraction.type',
|
||||
'MCL fraction type')
|
||||
con_fraction_type = fields.Many2One('lims.fraction.type',
|
||||
'Control fraction type')
|
||||
bmz_fraction_type = fields.Many2One('lims.fraction.type',
|
||||
'BMZ fraction type')
|
||||
rm_fraction_type = fields.Many2One('lims.fraction.type',
|
||||
'RM fraction type')
|
||||
bre_fraction_type = fields.Many2One('lims.fraction.type',
|
||||
'BRE fraction type')
|
||||
mrt_fraction_type = fields.Many2One('lims.fraction.type',
|
||||
'MRT fraction type')
|
||||
coi_fraction_type = fields.Many2One('lims.fraction.type',
|
||||
'COI fraction type')
|
||||
mrc_fraction_type = fields.Many2One('lims.fraction.type',
|
||||
'MRC fraction type')
|
||||
sla_fraction_type = fields.Many2One('lims.fraction.type',
|
||||
'SLA fraction type')
|
||||
itc_fraction_type = fields.Many2One('lims.fraction.type',
|
||||
'ITC fraction type')
|
||||
itl_fraction_type = fields.Many2One('lims.fraction.type',
|
||||
'ITL fraction type')
|
||||
reagents = fields.Many2Many('lims.configuration-product.category',
|
||||
'configuration', 'category', 'Reagents')
|
||||
planification_process_background = fields.Boolean(
|
||||
'Process Planifications in Background')
|
||||
invoice_party_relation_type = fields.Many2One('party.relation.type',
|
||||
'Invoice Party Relation Type')
|
||||
|
||||
@staticmethod
|
||||
def default_brix_digits():
|
||||
|
@ -277,8 +305,45 @@ class LimsConfiguration(ModelSingleton, ModelSQL, ModelView):
|
|||
def default_entry_confirm_background():
|
||||
return False
|
||||
|
||||
@classmethod
|
||||
def multivalue_model(cls, field):
|
||||
pool = Pool()
|
||||
if field == 'planification_sequence':
|
||||
return pool.get('lims.configuration.sequence')
|
||||
return super(Configuration, cls).multivalue_model(field)
|
||||
|
||||
class LimsConfigurationLaboratory(ModelSQL):
|
||||
@classmethod
|
||||
def default_planification_sequence(cls, **pattern):
|
||||
return cls.multivalue_model(
|
||||
'planification_sequence').default_planification_sequence()
|
||||
|
||||
@staticmethod
|
||||
def default_planification_process_background():
|
||||
return False
|
||||
|
||||
def get_reagents(self):
|
||||
res = []
|
||||
if self.reagents:
|
||||
for r in self.reagents:
|
||||
res.append(r.id)
|
||||
res.extend(self.get_reagent_childs(r.id))
|
||||
return res
|
||||
|
||||
def get_reagent_childs(self, reagent_id):
|
||||
Category = Pool().get('product.category')
|
||||
|
||||
res = []
|
||||
categories = Category.search([
|
||||
('parent', '=', reagent_id),
|
||||
])
|
||||
if categories:
|
||||
for c in categories:
|
||||
res.append(c.id)
|
||||
res.extend(self.get_reagent_childs(c.id))
|
||||
return res
|
||||
|
||||
|
||||
class ConfigurationLaboratory(ModelSQL):
|
||||
'Configuration - Laboratory'
|
||||
__name__ = 'lims.configuration-laboratory'
|
||||
|
||||
|
@ -288,7 +353,37 @@ class LimsConfigurationLaboratory(ModelSQL):
|
|||
ondelete='CASCADE', select=True, required=True)
|
||||
|
||||
|
||||
class LimsLabWorkYear(ModelSQL, ModelView, CompanyMultiValueMixin):
|
||||
class ConfigurationSequence(ModelSQL, CompanyValueMixin):
|
||||
'Configuration Sequence'
|
||||
__name__ = 'lims.configuration.sequence'
|
||||
|
||||
planification_sequence = fields.Many2One('ir.sequence',
|
||||
'Planification Sequence', depends=['company'], domain=[
|
||||
('company', 'in', [Eval('company', -1), None]),
|
||||
('code', '=', 'lims.planification'),
|
||||
])
|
||||
|
||||
@classmethod
|
||||
def default_planification_sequence(cls):
|
||||
pool = Pool()
|
||||
ModelData = pool.get('ir.model.data')
|
||||
try:
|
||||
return ModelData.get_id('lims.planification', 'seq_planification')
|
||||
except KeyError:
|
||||
return None
|
||||
|
||||
|
||||
class ConfigurationProductCategory(ModelSQL):
|
||||
'Configuration - Product Category'
|
||||
__name__ = 'lims.configuration-product.category'
|
||||
|
||||
configuration = fields.Many2One('lims.configuration', 'Configuration',
|
||||
ondelete='CASCADE', select=True, required=True)
|
||||
category = fields.Many2One('product.category', 'Category',
|
||||
ondelete='CASCADE', select=True, required=True)
|
||||
|
||||
|
||||
class LabWorkYear(ModelSQL, ModelView, CompanyMultiValueMixin):
|
||||
'Work Year'
|
||||
__name__ = 'lims.lab.workyear'
|
||||
_rec_name = 'code'
|
||||
|
@ -297,7 +392,7 @@ class LimsLabWorkYear(ModelSQL, ModelView, CompanyMultiValueMixin):
|
|||
start_date = fields.Date('Start date', required=True)
|
||||
end_date = fields.Date('End date', required=True)
|
||||
entry_sequence = fields.MultiValue(fields.Many2One(
|
||||
'ir.sequence.strict', 'Entry Sequence', required=True,
|
||||
'ir.sequence', 'Entry Sequence', required=True,
|
||||
domain=[
|
||||
('company', 'in',
|
||||
[Eval('context', {}).get('company', -1), None]),
|
||||
|
@ -318,16 +413,20 @@ class LimsLabWorkYear(ModelSQL, ModelView, CompanyMultiValueMixin):
|
|||
('code', '=', 'lims.service'),
|
||||
]))
|
||||
results_report_sequence = fields.MultiValue(fields.Many2One(
|
||||
'ir.sequence.strict', 'Results Report Sequence', required=True,
|
||||
'ir.sequence', 'Results Report Sequence', required=True,
|
||||
domain=[
|
||||
('company', 'in',
|
||||
[Eval('context', {}).get('company', -1), None]),
|
||||
('code', '=', 'lims.results_report'),
|
||||
]))
|
||||
sequences = fields.One2Many('lims.lab.workyear.sequence',
|
||||
'workyear', 'Sequences')
|
||||
default_entry_control = fields.Many2One('lims.entry',
|
||||
'Default entry control')
|
||||
|
||||
@classmethod
|
||||
def __setup__(cls):
|
||||
super(LimsLabWorkYear, cls).__setup__()
|
||||
super(LabWorkYear, cls).__setup__()
|
||||
cls._order.insert(0, ('start_date', 'ASC'))
|
||||
cls._error_messages.update({
|
||||
'workyear_overlaps': ('Work year "%(first)s" and '
|
||||
|
@ -340,7 +439,7 @@ class LimsLabWorkYear(ModelSQL, ModelView, CompanyMultiValueMixin):
|
|||
pool = Pool()
|
||||
if field in sequence_names:
|
||||
return pool.get('lims.lab.workyear.sequence')
|
||||
return super(LimsLabWorkYear, cls).multivalue_model(field)
|
||||
return super(LabWorkYear, cls).multivalue_model(field)
|
||||
|
||||
@classmethod
|
||||
def default_entry_sequence(cls, **pattern):
|
||||
|
@ -359,7 +458,7 @@ class LimsLabWorkYear(ModelSQL, ModelView, CompanyMultiValueMixin):
|
|||
|
||||
@classmethod
|
||||
def validate(cls, years):
|
||||
super(LimsLabWorkYear, cls).validate(years)
|
||||
super(LabWorkYear, cls).validate(years)
|
||||
for year in years:
|
||||
year.check_dates()
|
||||
|
||||
|
@ -367,13 +466,13 @@ class LimsLabWorkYear(ModelSQL, ModelView, CompanyMultiValueMixin):
|
|||
cursor = Transaction().connection.cursor()
|
||||
table = self.__table__()
|
||||
cursor.execute(*table.select(table.id,
|
||||
where=(((table.start_date <= self.start_date)
|
||||
& (table.end_date >= self.start_date))
|
||||
| ((table.start_date <= self.end_date)
|
||||
& (table.end_date >= self.end_date))
|
||||
| ((table.start_date >= self.start_date)
|
||||
& (table.end_date <= self.end_date)))
|
||||
& (table.id != self.id)))
|
||||
where=(((table.start_date <= self.start_date) &
|
||||
(table.end_date >= self.start_date)) |
|
||||
((table.start_date <= self.end_date) &
|
||||
(table.end_date >= self.end_date)) |
|
||||
((table.start_date >= self.start_date) &
|
||||
(table.end_date <= self.end_date))) &
|
||||
(table.id != self.id)))
|
||||
second_id = cursor.fetchone()
|
||||
if second_id:
|
||||
second = self.__class__(second_id[0])
|
||||
|
@ -413,13 +512,13 @@ class LimsLabWorkYear(ModelSQL, ModelView, CompanyMultiValueMixin):
|
|||
return sequence
|
||||
|
||||
|
||||
class LimsLabWorkYearSequence(ModelSQL, CompanyValueMixin):
|
||||
class LabWorkYearSequence(ModelSQL, CompanyValueMixin):
|
||||
'Work Year Sequence'
|
||||
__name__ = 'lims.lab.workyear.sequence'
|
||||
|
||||
workyear = fields.Many2One('lims.lab.workyear', 'Work Year',
|
||||
ondelete='CASCADE', select=True)
|
||||
entry_sequence = fields.Many2One('ir.sequence.strict',
|
||||
entry_sequence = fields.Many2One('ir.sequence',
|
||||
'Entry Sequence', depends=['company'], domain=[
|
||||
('company', 'in', [Eval('company', -1), None]),
|
||||
('code', '=', 'lims.entry'),
|
||||
|
@ -434,31 +533,12 @@ class LimsLabWorkYearSequence(ModelSQL, CompanyValueMixin):
|
|||
('company', 'in', [Eval('company', -1), None]),
|
||||
('code', '=', 'lims.service'),
|
||||
])
|
||||
results_report_sequence = fields.Many2One('ir.sequence.strict',
|
||||
results_report_sequence = fields.Many2One('ir.sequence',
|
||||
'Results Report Sequence', depends=['company'], domain=[
|
||||
('company', 'in', [Eval('company', -1), None]),
|
||||
('code', '=', 'lims.results_report'),
|
||||
])
|
||||
|
||||
@classmethod
|
||||
def __register__(cls, module_name):
|
||||
TableHandler = backend.get('TableHandler')
|
||||
exist = TableHandler.table_exist(cls._table)
|
||||
|
||||
super(LimsLabWorkYearSequence, cls).__register__(module_name)
|
||||
|
||||
if not exist:
|
||||
cls._migrate_property([], [], [])
|
||||
|
||||
@classmethod
|
||||
def _migrate_property(cls, field_names, value_names, fields):
|
||||
field_names.extend(sequence_names)
|
||||
value_names.extend(sequence_names)
|
||||
fields.append('company')
|
||||
migrate_property(
|
||||
'lims.lab.workyear', field_names, cls, value_names,
|
||||
parent='workyear', fields=fields)
|
||||
|
||||
@classmethod
|
||||
def default_entry_sequence(cls):
|
||||
pool = Pool()
|
||||
|
|
|
@ -0,0 +1,260 @@
|
|||
<?xml version="1.0"?>
|
||||
<tryton>
|
||||
<data>
|
||||
|
||||
<record model="ir.ui.icon" id="configuration_icon">
|
||||
<field name="name">lims-configuration</field>
|
||||
<field name="path">icons/configuration.svg</field>
|
||||
</record>
|
||||
|
||||
<!-- Configuration -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_configuration_view">
|
||||
<field name="model">lims.configuration</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">configuration_form</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.act_window" id="act_lims_configuration">
|
||||
<field name="name">Configuration</field>
|
||||
<field name="res_model">lims.configuration</field>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_lims_configuration_view">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="lims_configuration_view"/>
|
||||
<field name="act_window" ref="act_lims_configuration"/>
|
||||
</record>
|
||||
|
||||
<!-- Work Year -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_workyear_view_form">
|
||||
<field name="model">lims.lab.workyear</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">workyear_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_workyear_view_list">
|
||||
<field name="model">lims.lab.workyear</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">workyear_list</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.act_window" id="act_lims_workyear_list">
|
||||
<field name="name">Work Years</field>
|
||||
<field name="res_model">lims.lab.workyear</field>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_lims_workyear_view_list">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="lims_workyear_view_list"/>
|
||||
<field name="act_window" ref="act_lims_workyear_list"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_lims_workyear_view_form">
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="view" ref="lims_workyear_view_form"/>
|
||||
<field name="act_window" ref="act_lims_workyear_list"/>
|
||||
</record>
|
||||
|
||||
<!-- Laboratory Notebook View -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_notebook_views_view_form">
|
||||
<field name="model">lims.notebook.view</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">notebook_view_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_notebook_views_view_list">
|
||||
<field name="model">lims.notebook.view</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">notebook_view_list</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.act_window" id="act_lims_notebook_views_list">
|
||||
<field name="name">Laboratory Notebook Views</field>
|
||||
<field name="res_model">lims.notebook.view</field>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_lims_notebook_views_view_list">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="lims_notebook_views_view_list"/>
|
||||
<field name="act_window" ref="act_lims_notebook_views_list"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_lims_notebook_views_view_form">
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="view" ref="lims_notebook_views_view_form"/>
|
||||
<field name="act_window" ref="act_lims_notebook_views_list"/>
|
||||
</record>
|
||||
|
||||
<!-- Laboratory Notebook View Column -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_notebook_view_column_view_form">
|
||||
<field name="model">lims.notebook.view.column</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">notebook_view_column_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_notebook_view_column_view_list">
|
||||
<field name="model">lims.notebook.view.column</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">notebook_view_column_list</field>
|
||||
</record>
|
||||
|
||||
<!-- Printer -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_printer_view_form">
|
||||
<field name="model">lims.printer</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">printer_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_printer_view_list">
|
||||
<field name="model">lims.printer</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">printer_list</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.act_window" id="act_printer_list">
|
||||
<field name="name">Printers</field>
|
||||
<field name="res_model">lims.printer</field>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_printer_view_list">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="lims_printer_view_list"/>
|
||||
<field name="act_window" ref="act_printer_list"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_printer_view_form">
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="view" ref="lims_printer_view_form"/>
|
||||
<field name="act_window" ref="act_printer_list"/>
|
||||
</record>
|
||||
|
||||
<!-- Configuration -->
|
||||
<menuitem name="Configuration" parent="lims_menu"
|
||||
id="lims_config" sequence="10" icon="lims-configuration"/>
|
||||
|
||||
<!-- Configuration / Base -->
|
||||
<menuitem name="Base" parent="lims_config"
|
||||
id="lims_config_base" sequence="10"/>
|
||||
<menuitem parent="lims_config_base" action="act_lims_configuration"
|
||||
id="lims_configuration_menu" sequence="10"/>
|
||||
<menuitem parent="lims_config_base" action="act_lims_workyear_list"
|
||||
id="lims_workyear_menu" sequence="20"/>
|
||||
<menuitem parent="lims_config_base" action="act_printer_list"
|
||||
id="lims_printer_menu" sequence="30"/>
|
||||
|
||||
<menuitem name="Base Tables" parent="lims_config"
|
||||
id="lims_config_base_tables" sequence="70"/>
|
||||
|
||||
<menuitem name="Laboratory" parent="lims_config"
|
||||
id="lims_config_laboratory" sequence="40"/>
|
||||
<menuitem parent="lims_config_laboratory" action="act_lims_laboratory_list"
|
||||
id="lims_laboratory_menu" sequence="10"/>
|
||||
<menuitem parent="lims_config_laboratory" action="act_lims_laboratory_professional_list"
|
||||
id="lims_laboratory_professional_menu" sequence="20"/>
|
||||
<menuitem parent="lims_config_laboratory" action="act_lims_notebook_views_list"
|
||||
id="lims_notebook_views_menu" sequence="30"/>
|
||||
<menuitem parent="lims_config_laboratory" action="act_lims_lab_device_type_list"
|
||||
id="lims_lab_device_type_menu" sequence="40"/>
|
||||
<menuitem parent="lims_config_laboratory" action="act_lims_lab_device_list"
|
||||
id="lims_lab_device_menu" sequence="50"/>
|
||||
|
||||
<record model="ir.model.access" id="access_configuration">
|
||||
<field name="model" search="[('model', '=', 'lims.configuration')]"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
<field name="perm_create" eval="False"/>
|
||||
<field name="perm_delete" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.access" id="access_configuration_group_conf_base_admin">
|
||||
<field name="model" search="[('model', '=', 'lims.configuration')]"/>
|
||||
<field name="group" ref="group_lims_conf_base_admin"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
<field name="perm_create" eval="True"/>
|
||||
<field name="perm_delete" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.access" id="access_workyear">
|
||||
<field name="model" search="[('model', '=', 'lims.lab.workyear')]"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
<field name="perm_create" eval="False"/>
|
||||
<field name="perm_delete" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.access" id="access_workyear_group_conf_base_admin">
|
||||
<field name="model" search="[('model', '=', 'lims.lab.workyear')]"/>
|
||||
<field name="group" ref="group_lims_conf_base_admin"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
<field name="perm_create" eval="True"/>
|
||||
<field name="perm_delete" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.menu-res.group" id="menu_lims_group_conf_base_readonly">
|
||||
<field name="menu" ref="lims_menu"/>
|
||||
<field name="group" ref="group_lims_conf_base_readonly"/>
|
||||
</record>
|
||||
<record model="ir.ui.menu-res.group" id="menu_lims_group_conf_base_admin">
|
||||
<field name="menu" ref="lims_menu"/>
|
||||
<field name="group" ref="group_lims_conf_base_admin"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.menu-res.group" id="menu_config_group_conf_base_readonly">
|
||||
<field name="menu" ref="lims_config"/>
|
||||
<field name="group" ref="group_lims_conf_base_readonly"/>
|
||||
</record>
|
||||
<record model="ir.ui.menu-res.group" id="menu_config_group_conf_base_admin">
|
||||
<field name="menu" ref="lims_config"/>
|
||||
<field name="group" ref="group_lims_conf_base_admin"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.menu-res.group" id="menu_config_base_group_conf_base_readonly">
|
||||
<field name="menu" ref="lims_config_base"/>
|
||||
<field name="group" ref="group_lims_conf_base_readonly"/>
|
||||
</record>
|
||||
<record model="ir.ui.menu-res.group" id="menu_config_base_group_conf_base_admin">
|
||||
<field name="menu" ref="lims_config_base"/>
|
||||
<field name="group" ref="group_lims_conf_base_admin"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.menu-res.group" id="menu_lims_group_conf_base_tables_readonly">
|
||||
<field name="menu" ref="lims_menu"/>
|
||||
<field name="group" ref="group_lims_conf_base_tables_readonly"/>
|
||||
</record>
|
||||
<record model="ir.ui.menu-res.group" id="menu_lims_group_conf_base_tables_admin">
|
||||
<field name="menu" ref="lims_menu"/>
|
||||
<field name="group" ref="group_lims_conf_base_tables_admin"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.menu-res.group" id="menu_config_group_conf_base_tables_readonly">
|
||||
<field name="menu" ref="lims_config"/>
|
||||
<field name="group" ref="group_lims_conf_base_tables_readonly"/>
|
||||
</record>
|
||||
<record model="ir.ui.menu-res.group" id="menu_config_group_conf_base_tables_admin">
|
||||
<field name="menu" ref="lims_config"/>
|
||||
<field name="group" ref="group_lims_conf_base_tables_admin"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.menu-res.group" id="menu_config_laboratory_group_conf_base_tables_readonly">
|
||||
<field name="menu" ref="lims_config_base_tables"/>
|
||||
<field name="group" ref="group_lims_conf_base_tables_readonly"/>
|
||||
</record>
|
||||
<record model="ir.ui.menu-res.group" id="menu_config_laboratory_group_conf_base_tables_admin">
|
||||
<field name="menu" ref="lims_config_base_tables"/>
|
||||
<field name="group" ref="group_lims_conf_base_tables_admin"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.menu-res.group" id="menu_config_group_conf_laboratory_readonly">
|
||||
<field name="menu" ref="lims_config"/>
|
||||
<field name="group" ref="group_lims_conf_laboratory_readonly"/>
|
||||
</record>
|
||||
<record model="ir.ui.menu-res.group" id="menu_config_group_conf_laboratory_admin">
|
||||
<field name="menu" ref="lims_config"/>
|
||||
<field name="group" ref="group_lims_conf_laboratory_admin"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.menu-res.group" id="menu_config_laboratory_group_conf_laboratory_readonly">
|
||||
<field name="menu" ref="lims_config_laboratory"/>
|
||||
<field name="group" ref="group_lims_conf_laboratory_readonly"/>
|
||||
</record>
|
||||
<record model="ir.ui.menu-res.group" id="menu_config_laboratory_group_conf_laboratory_admin">
|
||||
<field name="menu" ref="lims_config_laboratory"/>
|
||||
<field name="group" ref="group_lims_conf_laboratory_admin"/>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</tryton>
|
|
@ -1,169 +0,0 @@
|
|||
<?xml version="1.0"?>
|
||||
<tryton>
|
||||
<data>
|
||||
|
||||
<!-- Menu items in lims_menu.xml -->
|
||||
|
||||
<!-- Configuration -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_configuration_view">
|
||||
<field name="model">lims.configuration</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">configuration_form</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.act_window" id="act_lims_configuration">
|
||||
<field name="name">Configuration</field>
|
||||
<field name="res_model">lims.configuration</field>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_lims_configuration_view">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="lims_configuration_view"/>
|
||||
<field name="act_window" ref="act_lims_configuration"/>
|
||||
</record>
|
||||
|
||||
<!-- Work Year -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_workyear_view_form">
|
||||
<field name="model">lims.lab.workyear</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">workyear_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_workyear_view_list">
|
||||
<field name="model">lims.lab.workyear</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">workyear_list</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.act_window" id="act_lims_workyear_list">
|
||||
<field name="name">Work Years</field>
|
||||
<field name="res_model">lims.lab.workyear</field>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_lims_workyear_view_list">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="lims_workyear_view_list"/>
|
||||
<field name="act_window" ref="act_lims_workyear_list"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_lims_workyear_view_form">
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="view" ref="lims_workyear_view_form"/>
|
||||
<field name="act_window" ref="act_lims_workyear_list"/>
|
||||
</record>
|
||||
|
||||
<!-- Laboratory Notebook View -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_notebook_views_view_form">
|
||||
<field name="model">lims.notebook.view</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">notebook_view_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_notebook_views_view_list">
|
||||
<field name="model">lims.notebook.view</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">notebook_view_list</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.act_window" id="act_lims_notebook_views_list">
|
||||
<field name="name">Laboratory Notebook Views</field>
|
||||
<field name="res_model">lims.notebook.view</field>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_lims_notebook_views_view_list">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="lims_notebook_views_view_list"/>
|
||||
<field name="act_window" ref="act_lims_notebook_views_list"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_lims_notebook_views_view_form">
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="view" ref="lims_notebook_views_view_form"/>
|
||||
<field name="act_window" ref="act_lims_notebook_views_list"/>
|
||||
</record>
|
||||
|
||||
<!-- Laboratory Notebook View Column -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_notebook_view_column_view_form">
|
||||
<field name="model">lims.notebook.view.column</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">notebook_view_column_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_notebook_view_column_view_list">
|
||||
<field name="model">lims.notebook.view.column</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">notebook_view_column_list</field>
|
||||
</record>
|
||||
|
||||
<!-- User Role -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_user_role_view_form">
|
||||
<field name="model">lims.user.role</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">user_role_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_user_role_view_list">
|
||||
<field name="model">lims.user.role</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">user_role_list</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.act_window" id="act_lims_user_role_list">
|
||||
<field name="name">User Roles</field>
|
||||
<field name="res_model">lims.user.role</field>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_lims_user_role_view_list">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="lims_user_role_view_list"/>
|
||||
<field name="act_window" ref="act_lims_user_role_list"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_lims_user_role_view_form">
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="view" ref="lims_user_role_view_form"/>
|
||||
<field name="act_window" ref="act_lims_user_role_list"/>
|
||||
</record>
|
||||
|
||||
<!-- User -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_user_view_form_preferences">
|
||||
<field name="model">res.user</field>
|
||||
<field name="inherit" ref="res.user_view_form_preferences"/>
|
||||
<field name="name">user_form_preferences</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_user_view_form">
|
||||
<field name="model">res.user</field>
|
||||
<field name="inherit" ref="res.user_view_form"/>
|
||||
<field name="name">user_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_user_view_list">
|
||||
<field name="model">res.user</field>
|
||||
<field name="inherit" ref="res.user_view_tree"/>
|
||||
<field name="name">user_list</field>
|
||||
</record>
|
||||
|
||||
<!-- Printer -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_printer_view_form">
|
||||
<field name="model">lims.printer</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">printer_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_printer_view_list">
|
||||
<field name="model">lims.printer</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">printer_list</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.act_window" id="act_printer_list">
|
||||
<field name="name">Printers</field>
|
||||
<field name="res_model">lims.printer</field>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_printer_view_list">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="lims_printer_view_list"/>
|
||||
<field name="act_window" ref="act_printer_list"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_printer_view_form">
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="view" ref="lims_printer_view_form"/>
|
||||
<field name="act_window" ref="act_printer_list"/>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</tryton>
|
|
@ -0,0 +1,391 @@
|
|||
<?xml version="1.0"?>
|
||||
<tryton>
|
||||
<data>
|
||||
|
||||
<record model="ir.ui.icon" id="laboratory_control_icon">
|
||||
<field name="name">lims-laboratory_control</field>
|
||||
<field name="path">icons/laboratory_control.svg</field>
|
||||
</record>
|
||||
<record model="ir.ui.icon" id="tendencies_icon">
|
||||
<field name="name">lims-tendencies</field>
|
||||
<field name="path">icons/tendencies.svg</field>
|
||||
</record>
|
||||
<record model="ir.ui.icon" id="concentration_level_icon">
|
||||
<field name="name">lims-concentration_level</field>
|
||||
<field name="path">icons/concentration_level.svg</field>
|
||||
</record>
|
||||
<record model="ir.ui.icon" id="control_means_deviations_calc_icon">
|
||||
<field name="name">lims-control_means_deviations_calc</field>
|
||||
<field name="path">icons/control_means_deviations_calc.svg</field>
|
||||
</record>
|
||||
<record model="ir.ui.icon" id="tendencies_analysis_icon">
|
||||
<field name="name">lims-tendencies_analysis</field>
|
||||
<field name="path">icons/tendencies_analysis.svg</field>
|
||||
</record>
|
||||
|
||||
<!-- Origins -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_range_type_view_form">
|
||||
<field name="model">lims.range.type</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">range_type_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_range_type_view_list">
|
||||
<field name="model">lims.range.type</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">range_type_list</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.act_window" id="act_lims_range_type_list">
|
||||
<field name="name">Origins</field>
|
||||
<field name="res_model">lims.range.type</field>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_lims_range_type_view_list">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="lims_range_type_view_list"/>
|
||||
<field name="act_window" ref="act_lims_range_type_list"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_lims_range_type_view_form">
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="view" ref="lims_range_type_view_form"/>
|
||||
<field name="act_window" ref="act_lims_range_type_list"/>
|
||||
</record>
|
||||
|
||||
<!-- Range -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_range_view_form">
|
||||
<field name="model">lims.range</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">range_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_range_view_list">
|
||||
<field name="model">lims.range</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">range_list</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.act_window" id="act_lims_range_list">
|
||||
<field name="name">Ranges</field>
|
||||
<field name="res_model">lims.range</field>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_lims_range_view_list">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="lims_range_view_list"/>
|
||||
<field name="act_window" ref="act_lims_range_list"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_lims_range_view_form">
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="view" ref="lims_range_view_form"/>
|
||||
<field name="act_window" ref="act_lims_range_list"/>
|
||||
</record>
|
||||
|
||||
<!-- Tendency -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_control_tendency_view_list">
|
||||
<field name="model">lims.control.tendency</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">control_tendency_list</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_control_tendency_view_form">
|
||||
<field name="model">lims.control.tendency</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">control_tendency_form</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.act_window" id="act_lims_control_tendency">
|
||||
<field name="name">Tendencies</field>
|
||||
<field name="res_model">lims.control.tendency</field>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_lims_control_tendency_view_list">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="lims_control_tendency_view_list"/>
|
||||
<field name="act_window" ref="act_lims_control_tendency"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_lims_control_tendency_view_form">
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="view" ref="lims_control_tendency_view_form"/>
|
||||
<field name="act_window" ref="act_lims_control_tendency"/>
|
||||
</record>
|
||||
|
||||
<!-- Tendency 2 -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_control_tendency_view_form2">
|
||||
<field name="model">lims.control.tendency</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">control_tendency_form2</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.act_window" id="act_lims_control_tendency2">
|
||||
<field name="name">Tendencies</field>
|
||||
<field name="res_model">lims.control.tendency</field>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_lims_control_tendency2_view_list">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="lims_control_tendency_view_list"/>
|
||||
<field name="act_window" ref="act_lims_control_tendency2"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_lims_control_tendency2_view_form">
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="view" ref="lims_control_tendency_view_form2"/>
|
||||
<field name="act_window" ref="act_lims_control_tendency2"/>
|
||||
</record>
|
||||
|
||||
|
||||
<!-- Tendency 3 -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_control_tendency_view_list3">
|
||||
<field name="model">lims.control.tendency</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">control_tendency_list3</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_control_tendency_view_form3">
|
||||
<field name="model">lims.control.tendency</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">control_tendency_form3</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_control_tendency_detail_view_list">
|
||||
<field name="model">lims.control.tendency.detail</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">control_tendency_detail_list</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_control_tendency_detail_view_form">
|
||||
<field name="model">lims.control.tendency.detail</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">control_tendency_detail_form</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.act_window" id="act_lims_control_tendency3">
|
||||
<field name="name">Tendencies Analysis</field>
|
||||
<field name="res_model">lims.control.tendency</field>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_lims_control_tendency3_view_list">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="lims_control_tendency_view_list3"/>
|
||||
<field name="act_window" ref="act_lims_control_tendency3"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_lims_control_tendency3_view_form">
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="view" ref="lims_control_tendency_view_form3"/>
|
||||
<field name="act_window" ref="act_lims_control_tendency3"/>
|
||||
</record>
|
||||
|
||||
<!-- Wizard Calculation of Means and Deviations -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_control_means_deviations_calc_start_view_form">
|
||||
<field name="model">lims.control.means_deviations_calc.start</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">control_means_deviations_calc_start_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_control_means_deviations_calc_empty_view_form">
|
||||
<field name="model">lims.control.means_deviations_calc.empty</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">control_means_deviations_calc_empty_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_control_means_deviations_calc_result_view_form">
|
||||
<field name="model">lims.control.means_deviations_calc.result</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">control_means_deviations_calc_result_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_control_result_line_view_list">
|
||||
<field name="model">lims.control.result_line</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">control_result_line_list</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_control_result_line_view_form">
|
||||
<field name="model">lims.control.result_line</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">control_result_line_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_control_result_line_detail_view_list">
|
||||
<field name="model">lims.control.result_line.detail</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">control_result_line_detail_list</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_control_result_line_detail_view_form">
|
||||
<field name="model">lims.control.result_line.detail</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">control_result_line_detail_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_control_means_deviations_calc_result2_view_form">
|
||||
<field name="model">lims.control.means_deviations_calc.result2</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">control_means_deviations_calc_result2_form</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.wizard" id="wiz_lims_control_means_deviations_calc">
|
||||
<field name="name">Calculation of Means and Deviations</field>
|
||||
<field name="wiz_name">lims.control.means_deviations_calc</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.field.access" id="access_means_deviations_calc_result_lines">
|
||||
<field name="field"
|
||||
search="[('name', '=', 'lines'), ('model.model', '=', 'lims.control.means_deviations_calc.result')]"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
<field name="perm_create" eval="False"/>
|
||||
<field name="perm_delete" eval="False"/>
|
||||
</record>
|
||||
|
||||
<!-- Wizard Tendencies Analysis -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_control_tendencies_analysis_start_view_form">
|
||||
<field name="model">lims.control.tendencies_analysis.start</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">control_tendencies_analysis_start_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_control_tendencies_analysis_result_view_form">
|
||||
<field name="model">lims.control.tendencies_analysis.result</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">control_tendencies_analysis_result_form</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.wizard" id="wiz_lims_control_tendencies_analysis">
|
||||
<field name="name">Tendencies Analysis</field>
|
||||
<field name="wiz_name">lims.control.tendencies_analysis</field>
|
||||
</record>
|
||||
|
||||
<!-- Control Charts -->
|
||||
|
||||
<record model="ir.action.wizard" id="wiz_control_chart_print">
|
||||
<field name="name">Control Chart</field>
|
||||
<field name="wiz_name">lims.control_chart.print</field>
|
||||
<field name="model">lims.control.tendency</field>
|
||||
</record>
|
||||
<record model="ir.action.report" id="report_control_chart">
|
||||
<field name="name">Control Chart</field>
|
||||
<field name="model">lims.control.tendency</field>
|
||||
<field name="report_name">lims.control_chart.report</field>
|
||||
<field name="report">lims/report/control_chart_report.odt</field>
|
||||
</record>
|
||||
<record model="ir.action.keyword" id="report_control_chart_keyword">
|
||||
<field name="keyword">form_print</field>
|
||||
<field name="model">lims.control.tendency,-1</field>
|
||||
<field name="action" ref="wiz_control_chart_print"/>
|
||||
</record>
|
||||
|
||||
<menuitem parent="lims_config_base_tables" action="act_lims_range_type_list"
|
||||
id="lims_range_type_list_menu" sequence="80"/>
|
||||
<menuitem parent="lims_config_base_tables" action="act_lims_range_list"
|
||||
id="lims_range_list_menu" sequence="90"/>
|
||||
|
||||
<menuitem name="Control Charts" parent="lims_laboratory"
|
||||
id="lims_laboratory_control" sequence="40"
|
||||
icon="lims-laboratory_control"/>
|
||||
<menuitem parent="lims_laboratory_control" action="act_lims_control_tendency"
|
||||
id="lims_control_tendency_menu" sequence="10"
|
||||
icon="lims-tendencies"/>
|
||||
<menuitem parent="lims_laboratory_control" action="act_lims_concentration_level"
|
||||
id="lims_concentration_level_menu" sequence="20"
|
||||
icon="lims-concentration_level"/>
|
||||
<menuitem parent="lims_laboratory_control" action="wiz_lims_control_means_deviations_calc"
|
||||
id="lims_control_means_deviations_calc_menu" sequence="30"
|
||||
icon="lims-control_means_deviations_calc"/>
|
||||
<menuitem parent="lims_laboratory_control" action="wiz_lims_control_tendencies_analysis"
|
||||
id="lims_control_tendencies_analysis_menu" sequence="40"
|
||||
icon="lims-tendencies_analysis"/>
|
||||
|
||||
<record model="ir.model.access" id="access_range_type">
|
||||
<field name="model" search="[('model', '=', 'lims.range.type')]"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
<field name="perm_create" eval="False"/>
|
||||
<field name="perm_delete" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.access" id="access_range_type_group_conf_base_tables_admin">
|
||||
<field name="model" search="[('model', '=', 'lims.range.type')]"/>
|
||||
<field name="group" ref="group_lims_conf_base_tables_admin"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
<field name="perm_create" eval="True"/>
|
||||
<field name="perm_delete" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.access" id="access_range">
|
||||
<field name="model" search="[('model', '=', 'lims.range')]"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
<field name="perm_create" eval="False"/>
|
||||
<field name="perm_delete" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.access" id="access_range_group_conf_base_tables_admin">
|
||||
<field name="model" search="[('model', '=', 'lims.range')]"/>
|
||||
<field name="group" ref="group_lims_conf_base_tables_admin"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
<field name="perm_create" eval="True"/>
|
||||
<field name="perm_delete" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.access" id="access_control_tendency">
|
||||
<field name="model" search="[('model', '=', 'lims.control.tendency')]"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
<field name="perm_create" eval="False"/>
|
||||
<field name="perm_delete" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.access" id="access_control_tendency_group_control">
|
||||
<field name="model" search="[('model', '=', 'lims.control.tendency')]"/>
|
||||
<field name="group" ref="group_lims_control"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
<field name="perm_create" eval="True"/>
|
||||
<field name="perm_delete" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.menu-res.group" id="menu_lims_group_control_readonly">
|
||||
<field name="menu" ref="lims_menu"/>
|
||||
<field name="group" ref="group_lims_control_readonly"/>
|
||||
</record>
|
||||
<record model="ir.ui.menu-res.group" id="menu_lims_group_control">
|
||||
<field name="menu" ref="lims_menu"/>
|
||||
<field name="group" ref="group_lims_control"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.menu-res.group" id="menu_laboratory_group_control_readonly">
|
||||
<field name="menu" ref="lims_laboratory"/>
|
||||
<field name="group" ref="group_lims_control_readonly"/>
|
||||
</record>
|
||||
<record model="ir.ui.menu-res.group" id="menu_laboratory_group_control">
|
||||
<field name="menu" ref="lims_laboratory"/>
|
||||
<field name="group" ref="group_lims_control"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.menu-res.group" id="menu_laboratory_control_group_control_readonly">
|
||||
<field name="menu" ref="lims_laboratory_control"/>
|
||||
<field name="group" ref="group_lims_control_readonly"/>
|
||||
</record>
|
||||
<record model="ir.ui.menu-res.group" id="menu_laboratory_control_group_control">
|
||||
<field name="menu" ref="lims_laboratory_control"/>
|
||||
<field name="group" ref="group_lims_control"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.menu-res.group" id="menu_control_tendency_group_control_readonly">
|
||||
<field name="menu" ref="lims_control_tendency_menu"/>
|
||||
<field name="group" ref="group_lims_control_readonly"/>
|
||||
</record>
|
||||
<record model="ir.ui.menu-res.group" id="menu_control_tendency_group_control">
|
||||
<field name="menu" ref="lims_control_tendency_menu"/>
|
||||
<field name="group" ref="group_lims_control"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.menu-res.group" id="menu_concentration_level_group_control_readonly">
|
||||
<field name="menu" ref="lims_concentration_level_menu"/>
|
||||
<field name="group" ref="group_lims_control_readonly"/>
|
||||
</record>
|
||||
<record model="ir.ui.menu-res.group" id="menu_concentration_level_group_control">
|
||||
<field name="menu" ref="lims_concentration_level_menu"/>
|
||||
<field name="group" ref="group_lims_control"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.menu-res.group" id="menu_control_means_deviations_calc_group_control">
|
||||
<field name="menu" ref="lims_control_means_deviations_calc_menu"/>
|
||||
<field name="group" ref="group_lims_control"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.menu-res.group" id="menu_control_tendencies_analysis_group_control">
|
||||
<field name="menu" ref="lims_control_tendencies_analysis_menu"/>
|
||||
<field name="group" ref="group_lims_control"/>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</tryton>
|
|
@ -1,69 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<tryton>
|
||||
<data noupdate="1">
|
||||
|
||||
<!-- Sequences for Entry -->
|
||||
|
||||
<record model="ir.sequence.type" id="seq_type_entry">
|
||||
<field name="name">Entry</field>
|
||||
<field name="code">lims.entry</field>
|
||||
</record>
|
||||
<record model="ir.sequence.type-res.group"
|
||||
id="seq_type_entry_group_admin">
|
||||
<field name="sequence_type" ref="seq_type_entry"/>
|
||||
<field name="group" ref="res.group_admin"/>
|
||||
</record>
|
||||
<record model="ir.sequence.strict" id="seq_entry">
|
||||
<field name="name">Entry</field>
|
||||
<field name="code">lims.entry</field>
|
||||
<field eval="7" name="padding"/>
|
||||
</record>
|
||||
|
||||
<!-- Sequences for Sample -->
|
||||
|
||||
<record model="ir.sequence.type" id="seq_type_sample">
|
||||
<field name="name">Sample</field>
|
||||
<field name="code">lims.sample</field>
|
||||
</record>
|
||||
<record model="ir.sequence.type-res.group"
|
||||
id="seq_type_sample_group_admin">
|
||||
<field name="sequence_type" ref="seq_type_sample"/>
|
||||
<field name="group" ref="res.group_admin"/>
|
||||
</record>
|
||||
<record model="ir.sequence" id="seq_sample">
|
||||
<field name="name">Sample</field>
|
||||
<field name="code">lims.sample</field>
|
||||
<field eval="7" name="padding"/>
|
||||
</record>
|
||||
|
||||
<!-- Sequences for Service -->
|
||||
|
||||
<record model="ir.sequence.type" id="seq_type_service">
|
||||
<field name="name">Service</field>
|
||||
<field name="code">lims.service</field>
|
||||
</record>
|
||||
<record model="ir.sequence.type-res.group"
|
||||
id="seq_type_service_group_admin">
|
||||
<field name="sequence_type" ref="seq_type_service"/>
|
||||
<field name="group" ref="res.group_admin"/>
|
||||
</record>
|
||||
<record model="ir.sequence" id="seq_service">
|
||||
<field name="name">Service</field>
|
||||
<field name="code">lims.service</field>
|
||||
<field eval="8" name="padding"/>
|
||||
</record>
|
||||
|
||||
<!-- Sequences for Results Report -->
|
||||
|
||||
<record model="ir.sequence.type" id="seq_type_results_report">
|
||||
<field name="name">Results Report</field>
|
||||
<field name="code">lims.results_report</field>
|
||||
</record>
|
||||
<record model="ir.sequence.type-res.group"
|
||||
id="seq_type_results_report_group_admin">
|
||||
<field name="sequence_type" ref="seq_type_results_report"/>
|
||||
<field name="group" ref="res.group_admin"/>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</tryton>
|
|
@ -1,12 +1,11 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# This file is part of lims_department module for Tryton.
|
||||
# This file is part of lims module for Tryton.
|
||||
# The COPYRIGHT file at the top level of this repository contains
|
||||
# the full copyright notices and license terms.
|
||||
|
||||
from trytond.model import ModelView, ModelSQL, fields
|
||||
from trytond.pool import PoolMeta
|
||||
|
||||
__all__ = ['Department', 'User', 'UserDepartment']
|
||||
__all__ = ['Department', 'UserDepartment']
|
||||
|
||||
|
||||
class Department(ModelSQL, ModelView):
|
||||
|
@ -19,13 +18,6 @@ class Department(ModelSQL, ModelView):
|
|||
domain=[('type', '=', 'storage')])
|
||||
|
||||
|
||||
class User:
|
||||
__name__ = 'res.user'
|
||||
__metaclass__ = PoolMeta
|
||||
|
||||
departments = fields.One2Many('user.department', 'user', 'Departments')
|
||||
|
||||
|
||||
class UserDepartment(ModelSQL, ModelView):
|
||||
'User Department'
|
||||
__name__ = 'user.department'
|
|
@ -2,7 +2,6 @@
|
|||
<tryton>
|
||||
<data>
|
||||
|
||||
<!-- Menu items in lims_menu.xml -->
|
||||
|
||||
<!-- Department -->
|
||||
|
||||
|
@ -32,6 +31,10 @@
|
|||
<field name="act_window" ref="act_company_department_list"/>
|
||||
</record>
|
||||
|
||||
<menuitem parent="party.menu_configuration"
|
||||
action="act_company_department_list"
|
||||
id="company_department_menu"/>
|
||||
|
||||
<!-- User Department -->
|
||||
|
||||
<record model="ir.ui.view" id="user_department_view_form">
|
||||
|
@ -45,5 +48,30 @@
|
|||
<field name="name">user_department_list</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.access" id="access_department">
|
||||
<field name="model" search="[('model', '=', 'company.department')]"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
<field name="perm_create" eval="False"/>
|
||||
<field name="perm_delete" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.access" id="access_department_group_party_admin">
|
||||
<field name="model" search="[('model', '=', 'company.department')]"/>
|
||||
<field name="group" ref="party.group_party_admin"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
<field name="perm_create" eval="True"/>
|
||||
<field name="perm_delete" eval="True"/>
|
||||
</record>
|
||||
|
||||
<!-- Access Rights on Menu -->
|
||||
|
||||
<!-- Other menu items -->
|
||||
|
||||
<record model="ir.ui.menu-res.group" id="menu_company_department_group_party_admin">
|
||||
<field name="menu" ref="company_department_menu"/>
|
||||
<field name="group" ref="party.group_party_admin"/>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</tryton>
|
|
@ -0,0 +1,563 @@
|
|||
<?xml version="1.0"?>
|
||||
<tryton>
|
||||
<data>
|
||||
|
||||
<record model="ir.ui.icon" id="entry_board_icon">
|
||||
<field name="name">lims-entry_board</field>
|
||||
<field name="path">icons/entry_board.svg</field>
|
||||
</record>
|
||||
|
||||
<!-- Sequences for Entry -->
|
||||
|
||||
<record model="ir.sequence.type" id="seq_type_entry">
|
||||
<field name="name">Entry</field>
|
||||
<field name="code">lims.entry</field>
|
||||
</record>
|
||||
<record model="ir.sequence.type-res.group"
|
||||
id="seq_type_entry_group_admin">
|
||||
<field name="sequence_type" ref="seq_type_entry"/>
|
||||
<field name="group" ref="res.group_admin"/>
|
||||
</record>
|
||||
<record model="ir.sequence.strict" id="seq_entry">
|
||||
<field name="name">Entry</field>
|
||||
<field name="code">lims.entry</field>
|
||||
<field eval="7" name="padding"/>
|
||||
</record>
|
||||
|
||||
<!-- Entry -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_entry_view_form">
|
||||
<field name="model">lims.entry</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">entry_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_entry_view_list">
|
||||
<field name="model">lims.entry</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">entry_list</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.act_window" id="act_lims_entry_list">
|
||||
<field name="name">Entries</field>
|
||||
<field name="res_model">lims.entry</field>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_lims_entry_list_view_list">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="lims_entry_view_list"/>
|
||||
<field name="act_window" ref="act_lims_entry_list"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_lims_entry_list_view_form">
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="view" ref="lims_entry_view_form"/>
|
||||
<field name="act_window" ref="act_lims_entry_list"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.act_window" id="act_lims_entry_form">
|
||||
<field name="name">New Entry</field>
|
||||
<field name="res_model">lims.entry</field>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_lims_entry_form_view_form">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="lims_entry_view_form"/>
|
||||
<field name="act_window" ref="act_lims_entry_form"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_lims_entry_form_view_list">
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="view" ref="lims_entry_view_list"/>
|
||||
<field name="act_window" ref="act_lims_entry_form"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.act_window.domain" id="act_lims_entry_list_domain_draft">
|
||||
<field name="name">Draft</field>
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="domain"
|
||||
eval="[('state', '=', 'draft')]"
|
||||
pyson="1"/>
|
||||
<field name="act_window" ref="act_lims_entry_list"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.domain" id="act_lims_entry_list_domain_ongoing">
|
||||
<field name="name">Ongoing</field>
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="domain"
|
||||
eval="[('state', '=', 'ongoing')]"
|
||||
pyson="1"/>
|
||||
<field name="act_window" ref="act_lims_entry_list"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.domain" id="act_lims_entry_list_domain_pending">
|
||||
<field name="name">Administration pending</field>
|
||||
<field name="sequence" eval="30"/>
|
||||
<field name="domain"
|
||||
eval="[('state', '=', 'pending')]"
|
||||
pyson="1"/>
|
||||
<field name="act_window" ref="act_lims_entry_list"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.domain" id="act_lims_entry_list_domain_all">
|
||||
<field name="name">All</field>
|
||||
<field name="sequence" eval="9999"/>
|
||||
<field name="domain"></field>
|
||||
<field name="act_window" ref="act_lims_entry_list"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.button" id="entry_create_sample_button">
|
||||
<field name="name">create_sample</field>
|
||||
<field name="model" search="[('model', '=', 'lims.entry')]"/>
|
||||
</record>
|
||||
<record model="ir.model.button-res.group" id="entry_create_sample_button_group_lims_entry">
|
||||
<field name="button" ref="entry_create_sample_button"/>
|
||||
<field name="group" ref="group_lims_entry"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.button" id="entry_confirm_button">
|
||||
<field name="name">confirm</field>
|
||||
<field name="model" search="[('model', '=', 'lims.entry')]"/>
|
||||
</record>
|
||||
<record model="ir.model.button-res.group" id="entry_confirm_button_group_lims_entry">
|
||||
<field name="button" ref="entry_confirm_button"/>
|
||||
<field name="group" ref="group_lims_entry"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.button" id="entry_on_hold_button">
|
||||
<field name="name">on_hold</field>
|
||||
<field name="model" search="[('model', '=', 'lims.entry')]"/>
|
||||
</record>
|
||||
<record model="ir.model.button-res.group" id="entry_on_hold_button_group_lims_entry">
|
||||
<field name="button" ref="entry_on_hold_button"/>
|
||||
<field name="group" ref="group_lims_entry"/>
|
||||
</record>
|
||||
|
||||
<!-- Entry Invoice Contact -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_entry_invoice_contacts_view_form">
|
||||
<field name="model">lims.entry.invoice_contacts</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">entry_invoice_contacts_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_entry_invoice_contacts_view_list">
|
||||
<field name="model">lims.entry.invoice_contacts</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">entry_invoice_contacts_list</field>
|
||||
</record>
|
||||
|
||||
<!-- Entry Report Contact -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_entry_report_contacts_view_form">
|
||||
<field name="model">lims.entry.report_contacts</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">entry_report_contacts_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_entry_report_contacts_view_list">
|
||||
<field name="model">lims.entry.report_contacts</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">entry_report_contacts_list</field>
|
||||
</record>
|
||||
|
||||
<!-- Entry Acknowledgment Contact -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_entry_acknowledgment_contacts_view_form">
|
||||
<field name="model">lims.entry.acknowledgment_contacts</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">entry_acknowledgment_contacts_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_entry_acknowledgment_contacts_view_list">
|
||||
<field name="model">lims.entry.acknowledgment_contacts</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">entry_acknowledgment_contacts_list</field>
|
||||
</record>
|
||||
|
||||
<!-- Entry Suspension Reason -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_entry_suspension_reason_view_form">
|
||||
<field name="model">lims.entry.suspension.reason</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">entry_suspension_reason_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_entry_suspension_reason_view_list">
|
||||
<field name="model">lims.entry.suspension.reason</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">entry_suspension_reason_list</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.act_window" id="act_lims_entry_suspension_reason_list">
|
||||
<field name="name">Entry Suspension Reasons</field>
|
||||
<field name="res_model">lims.entry.suspension.reason</field>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_lims_entry_suspension_reason_view_list">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="lims_entry_suspension_reason_view_list"/>
|
||||
<field name="act_window" ref="act_lims_entry_suspension_reason_list"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_lims_entry_suspension_reason_view_form">
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="view" ref="lims_entry_suspension_reason_view_form"/>
|
||||
<field name="act_window" ref="act_lims_entry_suspension_reason_list"/>
|
||||
</record>
|
||||
|
||||
<!-- Entry Detail Analysis -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_entry_detail_analysis_view_form">
|
||||
<field name="model">lims.entry.detail.analysis</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">entry_detail_analysis_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_entry_detail_analysis_view_list">
|
||||
<field name="model">lims.entry.detail.analysis</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">entry_detail_analysis_list</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.act_window" id="act_lims_entry_detail_analysis_list">
|
||||
<field name="name">Entry Detail Analysis</field>
|
||||
<field name="res_model">lims.entry.detail.analysis</field>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_lims_entry_detail_analysis_view_list">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="lims_entry_detail_analysis_view_list"/>
|
||||
<field name="act_window" ref="act_lims_entry_detail_analysis_list"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_lims_entry_detail_analysis_view_form">
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="view" ref="lims_entry_detail_analysis_view_form"/>
|
||||
<field name="act_window" ref="act_lims_entry_detail_analysis_list"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.rule.group" id="rule_group_entry_detail_analysis">
|
||||
<field name="model" search="[('model', '=', 'lims.entry.detail.analysis')]"/>
|
||||
<field name="global_p" eval="True"/>
|
||||
</record>
|
||||
<record model="ir.rule" id="rule_entry_detail_analysis">
|
||||
<field name="domain"
|
||||
eval="[If(Bool(Eval('user', {}).get('laboratory', False)), ('laboratory', '=', Eval('user', {}).get('laboratory', None)), If(Bool(Eval('user', {}).get('laboratories', False)), ('laboratory', 'in', Eval('user', {}).get('laboratories', [])), ('id', '!=', 0)))]"
|
||||
pyson="1"/>
|
||||
<field name="rule_group" ref="rule_group_entry_detail_analysis"/>
|
||||
</record>
|
||||
|
||||
<!-- Entry actions related -->
|
||||
|
||||
<record model="ir.action.act_window" id="act_lims_sample_related1">
|
||||
<field name="name">1. Samples</field>
|
||||
<field name="res_model">lims.sample</field>
|
||||
<field name="domain" eval="[('entry', 'in', Eval('active_ids'))]" pyson="1"/>
|
||||
</record>
|
||||
<record model="ir.action.keyword" id="act_open_sample_keyword1">
|
||||
<field name="keyword">form_relate</field>
|
||||
<field name="model">lims.entry,-1</field>
|
||||
<field name="action" ref="act_lims_sample_related1"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.act_window" id="act_lims_fraction_related1">
|
||||
<field name="name">2. Fractions</field>
|
||||
<field name="res_model">lims.fraction</field>
|
||||
<field name="domain" eval="[('entry', 'in', Eval('active_ids'))]" pyson="1"/>
|
||||
</record>
|
||||
<record model="ir.action.keyword" id="act_open_fraction_keyword1">
|
||||
<field name="keyword">form_relate</field>
|
||||
<field name="model">lims.entry,-1</field>
|
||||
<field name="action" ref="act_lims_fraction_related1"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.act_window" id="act_lims_service_related1">
|
||||
<field name="name">3. Services</field>
|
||||
<field name="res_model">lims.service</field>
|
||||
<field name="domain" eval="[('entry', 'in', Eval('active_ids'))]" pyson="1"/>
|
||||
</record>
|
||||
<record model="ir.action.keyword" id="act_open_service_keyword1">
|
||||
<field name="keyword">form_relate</field>
|
||||
<field name="model">lims.entry,-1</field>
|
||||
<field name="action" ref="act_lims_service_related1"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.act_window" id="act_lims_entry_detail_analysis_related1">
|
||||
<field name="name">4. Entry Detail Analysis</field>
|
||||
<field name="res_model">lims.entry.detail.analysis</field>
|
||||
<field name="domain" eval="[('entry', 'in', Eval('active_ids'))]" pyson="1"/>
|
||||
</record>
|
||||
<record model="ir.action.keyword" id="act_open_entry_detail_analysis_keyword1">
|
||||
<field name="keyword">form_relate</field>
|
||||
<field name="model">lims.entry,-1</field>
|
||||
<field name="action" ref="act_lims_entry_detail_analysis_related1"/>
|
||||
</record>
|
||||
|
||||
<!-- Cron -->
|
||||
|
||||
<record model="ir.cron" id="cron_lims_acknowledgment_of_receipt">
|
||||
<field name="name">Lims Acknowledgment of Receipt (Samples)</field>
|
||||
<field name="request_user" ref="res.user_admin"/>
|
||||
<field name="user" ref="user_acknowledgment_of_receipt"/>
|
||||
<field name="active" eval="True"/>
|
||||
<field name="interval_number" eval="20"/>
|
||||
<field name="interval_type">minutes</field>
|
||||
<field name="number_calls" eval="-1"/>
|
||||
<field name="repeat_missed" eval="False"/>
|
||||
<field name="model">lims.entry</field>
|
||||
<field name="function">cron_acknowledgment_of_receipt</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.cron" id="cron_lims_confirm_waiting_entries">
|
||||
<field name="name">Lims Confirm Waiting Entries</field>
|
||||
<field name="request_user" ref="res.user_admin"/>
|
||||
<field name="user" ref="user_entry_confirm"/>
|
||||
<field name="active" eval="True"/>
|
||||
<field name="interval_number" eval="1"/>
|
||||
<field name="interval_type">minutes</field>
|
||||
<field name="number_calls" eval="-1"/>
|
||||
<field name="repeat_missed" eval="False"/>
|
||||
<field name="model">lims.fraction</field>
|
||||
<field name="function">confirm_waiting_fractions</field>
|
||||
</record>
|
||||
|
||||
<!-- Wizard Forward Acknowledgment of Samples Receipt -->
|
||||
|
||||
<record model="ir.action.wizard" id="wiz_lims_forward_entry_acknowledgment">
|
||||
<field name="name">Forward Acknowledgment of Samples Receipt</field>
|
||||
<field name="wiz_name">lims.entry.acknowledgment.forward</field>
|
||||
</record>
|
||||
<record model="ir.action.keyword" id="lims_forward_entry_acknowledgment_keyword">
|
||||
<field name="keyword">form_action</field>
|
||||
<field name="model">lims.entry,-1</field>
|
||||
<field name="action" ref="wiz_lims_forward_entry_acknowledgment"/>
|
||||
</record>
|
||||
|
||||
<!-- Wizard Change Invoice Party -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_change_invoice_party_start_view_form">
|
||||
<field name="model">lims.entry.change_invoice_party.start</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">entry_change_invoice_party_start_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_change_invoice_party_error_view_form">
|
||||
<field name="model">lims.entry.change_invoice_party.error</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">entry_change_invoice_party_error_form</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.wizard" id="wiz_lims_change_invoice_party">
|
||||
<field name="name">Change Invoice Party</field>
|
||||
<field name="wiz_name">lims.entry.change_invoice_party</field>
|
||||
</record>
|
||||
<record model="ir.action.keyword" id="lims_change_invoice_party_keyword">
|
||||
<field name="keyword">form_action</field>
|
||||
<field name="model">lims.entry,-1</field>
|
||||
<field name="action" ref="wiz_lims_change_invoice_party"/>
|
||||
</record>
|
||||
|
||||
<!-- Acknowledgment of Samples Receipt -->
|
||||
|
||||
<record model="ir.action.wizard" id="print_entry_acknowledgment">
|
||||
<field name="name">Acknowledgment of Samples Receipt</field>
|
||||
<field name="wiz_name">lims.entry.acknowledgment.print</field>
|
||||
<field name="model">lims.entry</field>
|
||||
</record>
|
||||
<record model="ir.action.report" id="report_entry_acknowledgment">
|
||||
<field name="name">Acknowledgment of Samples Receipt</field>
|
||||
<field name="model">lims.entry</field>
|
||||
<field name="report_name">lims.entry.acknowledgment.report</field>
|
||||
<field name="report">lims/report/entry_acknowledgment_report.odt</field>
|
||||
</record>
|
||||
<record model="ir.action.keyword" id="report_entry_acknowledgment_keyword">
|
||||
<field name="keyword">form_print</field>
|
||||
<field name="model">lims.entry,-1</field>
|
||||
<field name="action" ref="print_entry_acknowledgment"/>
|
||||
</record>
|
||||
|
||||
<!-- Entry Detail -->
|
||||
|
||||
<record model="ir.action.report" id="report_entry_detail">
|
||||
<field name="name">Entry Detail</field>
|
||||
<field name="model">lims.entry</field>
|
||||
<field name="report_name">lims.entry.detail.report</field>
|
||||
<field name="report">lims/report/entry_detail_report.odt</field>
|
||||
</record>
|
||||
<record model="ir.action.keyword" id="report_entry_detail_keyword">
|
||||
<field name="keyword">form_print</field>
|
||||
<field name="model">lims.entry,-1</field>
|
||||
<field name="action" ref="report_entry_detail"/>
|
||||
</record>
|
||||
|
||||
<!-- Entry Labels -->
|
||||
|
||||
<record model="ir.action.report" id="report_entry_labels">
|
||||
<field name="name">Entry Labels</field>
|
||||
<field name="model">lims.entry</field>
|
||||
<field name="report_name">lims.entry.labels.report</field>
|
||||
<field name="report">lims/report/entry_labels_report.odt</field>
|
||||
</record>
|
||||
<record model="ir.action.keyword" id="report_entry_labels_keyword">
|
||||
<field name="keyword">form_print</field>
|
||||
<field name="model">lims.entry,-1</field>
|
||||
<field name="action" ref="report_entry_labels"/>
|
||||
</record>
|
||||
|
||||
<!-- Entry Labels Printer -->
|
||||
|
||||
<record model="ir.action.wizard" id="wiz_report_entry_labels_printer">
|
||||
<field name="name">Entry Labels Printer</field>
|
||||
<field name="wiz_name">lims.entry.labels.printer.report</field>
|
||||
<field name="model">lims.entry</field>
|
||||
</record>
|
||||
<record model="ir.action.keyword"
|
||||
id="wiz_report_entry_labels_printer_keyword">
|
||||
<field name="keyword">form_print</field>
|
||||
<field name="model">lims.entry,-1</field>
|
||||
<field name="action" ref="wiz_report_entry_labels_printer"/>
|
||||
</record>
|
||||
|
||||
<!-- Configuration / Entry -->
|
||||
<menuitem name="Entry" parent="lims_config"
|
||||
id="lims_config_entry" sequence="30"/>
|
||||
<menuitem parent="lims_config_entry" action="act_lims_entry_suspension_reason_list"
|
||||
id="lims_entry_suspension_reason_menu" sequence="50"/>
|
||||
|
||||
<menuitem parent="lims_menu" name="Entries Board"
|
||||
id="lims_entry_board_menu" sequence="30" icon="lims-entry_board"/>
|
||||
<!-- <menuitem parent="lims_entry_board_menu" action="wiz_lims_create_entry"
|
||||
id="lims_create_entry_menu" sequence="5"/>-->
|
||||
<menuitem parent="lims_entry_board_menu" action="act_lims_entry_form"
|
||||
id="lims_entry_form_menu" sequence="10" icon="tryton-new"/>
|
||||
<menuitem parent="lims_entry_board_menu" action="act_lims_entry_list"
|
||||
id="lims_entry_menu" sequence="20" icon="tryton-list"/>
|
||||
|
||||
<record model="ir.model.access" id="access_entry_suspension_reason">
|
||||
<field name="model" search="[('model', '=', 'lims.entry.suspension.reason')]"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
<field name="perm_create" eval="False"/>
|
||||
<field name="perm_delete" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.access" id="access_entry_suspension_reason_group_conf_entry_admin">
|
||||
<field name="model" search="[('model', '=', 'lims.entry.suspension.reason')]"/>
|
||||
<field name="group" ref="group_lims_conf_entry_admin"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
<field name="perm_create" eval="True"/>
|
||||
<field name="perm_delete" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.access" id="access_entry">
|
||||
<field name="model" search="[('model', '=', 'lims.entry')]"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
<field name="perm_create" eval="False"/>
|
||||
<field name="perm_delete" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.access" id="access_entry_group_entry">
|
||||
<field name="model" search="[('model', '=', 'lims.entry')]"/>
|
||||
<field name="group" ref="group_lims_entry"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
<field name="perm_create" eval="True"/>
|
||||
<field name="perm_delete" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.access" id="access_entry_detail_analysis">
|
||||
<field name="model" search="[('model', '=', 'lims.entry.detail.analysis')]"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
<field name="perm_create" eval="False"/>
|
||||
<field name="perm_delete" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.access" id="access_entry_detail_analysis_group_entry_update">
|
||||
<field name="model" search="[('model', '=', 'lims.entry.detail.analysis')]"/>
|
||||
<field name="group" ref="group_lims_entry_update"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
<field name="perm_create" eval="False"/>
|
||||
<field name="perm_delete" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.access" id="access_entry_detail_analysis_group_entry">
|
||||
<field name="model" search="[('model', '=', 'lims.entry.detail.analysis')]"/>
|
||||
<field name="group" ref="group_lims_entry"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
<field name="perm_create" eval="True"/>
|
||||
<field name="perm_delete" eval="True"/>
|
||||
</record>
|
||||
<record model="ir.model.access" id="access_entry_detail_analysis_group_laboratory_results_acceptance">
|
||||
<field name="model" search="[('model', '=', 'lims.entry.detail.analysis')]"/>
|
||||
<field name="group" ref="group_lims_laboratory_results_acceptance"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
<field name="perm_create" eval="False"/>
|
||||
<field name="perm_delete" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.access" id="access_entry_detail_analysis_group_laboratory_reports">
|
||||
<field name="model" search="[('model', '=', 'lims.entry.detail.analysis')]"/>
|
||||
<field name="group" ref="group_lims_laboratory_reports"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
<field name="perm_create" eval="False"/>
|
||||
<field name="perm_delete" eval="False"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.menu-res.group" id="menu_lims_group_conf_entry_readonly">
|
||||
<field name="menu" ref="lims_menu"/>
|
||||
<field name="group" ref="group_lims_conf_entry_readonly"/>
|
||||
</record>
|
||||
<record model="ir.ui.menu-res.group" id="menu_lims_group_conf_entry_admin">
|
||||
<field name="menu" ref="lims_menu"/>
|
||||
<field name="group" ref="group_lims_conf_entry_admin"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.menu-res.group" id="menu_config_group_conf_entry_readonly">
|
||||
<field name="menu" ref="lims_config"/>
|
||||
<field name="group" ref="group_lims_conf_entry_readonly"/>
|
||||
</record>
|
||||
<record model="ir.ui.menu-res.group" id="menu_config_group_conf_entry_admin">
|
||||
<field name="menu" ref="lims_config"/>
|
||||
<field name="group" ref="group_lims_conf_entry_admin"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.menu-res.group" id="menu_config_entry_group_conf_entry_readonly">
|
||||
<field name="menu" ref="lims_config_entry"/>
|
||||
<field name="group" ref="group_lims_conf_entry_readonly"/>
|
||||
</record>
|
||||
<record model="ir.ui.menu-res.group" id="menu_config_entry_group_conf_entry_admin">
|
||||
<field name="menu" ref="lims_config_entry"/>
|
||||
<field name="group" ref="group_lims_conf_entry_admin"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.menu-res.group" id="menu_lims_group_entry_readonly">
|
||||
<field name="menu" ref="lims_menu"/>
|
||||
<field name="group" ref="group_lims_entry_readonly"/>
|
||||
</record>
|
||||
<record model="ir.ui.menu-res.group" id="menu_lims_group_entry_update">
|
||||
<field name="menu" ref="lims_menu"/>
|
||||
<field name="group" ref="group_lims_entry_update"/>
|
||||
</record>
|
||||
<record model="ir.ui.menu-res.group" id="menu_lims_group_entry">
|
||||
<field name="menu" ref="lims_menu"/>
|
||||
<field name="group" ref="group_lims_entry"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.menu-res.group" id="menu_entry_board_group_entry_readonly">
|
||||
<field name="menu" ref="lims_entry_board_menu"/>
|
||||
<field name="group" ref="group_lims_entry_readonly"/>
|
||||
</record>
|
||||
<record model="ir.ui.menu-res.group" id="menu_entry_board_group_entry_update">
|
||||
<field name="menu" ref="lims_entry_board_menu"/>
|
||||
<field name="group" ref="group_lims_entry_update"/>
|
||||
</record>
|
||||
<record model="ir.ui.menu-res.group" id="menu_entry_board_group_entry">
|
||||
<field name="menu" ref="lims_entry_board_menu"/>
|
||||
<field name="group" ref="group_lims_entry"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.menu-res.group" id="menu_entry_form_group_entry">
|
||||
<field name="menu" ref="lims_entry_form_menu"/>
|
||||
<field name="group" ref="group_lims_entry"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.menu-res.group" id="menu_entry_group_entry_readonly">
|
||||
<field name="menu" ref="lims_entry_menu"/>
|
||||
<field name="group" ref="group_lims_entry_readonly"/>
|
||||
</record>
|
||||
<record model="ir.ui.menu-res.group" id="menu_entry_group_entry_update">
|
||||
<field name="menu" ref="lims_entry_menu"/>
|
||||
<field name="group" ref="group_lims_entry_update"/>
|
||||
</record>
|
||||
<record model="ir.ui.menu-res.group" id="menu_entry_group_entry">
|
||||
<field name="menu" ref="lims_entry_menu"/>
|
||||
<field name="group" ref="group_lims_entry"/>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</tryton>
|
|
@ -0,0 +1,64 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="256px"
|
||||
height="256px"
|
||||
viewBox="0 0 256 256"
|
||||
version="1.1"
|
||||
id="SVGRoot"
|
||||
inkscape:version="0.92.2pre0 (973e216, 2017-07-25)"
|
||||
sodipodi:docname="blue.svg">
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="1"
|
||||
inkscape:cx="128"
|
||||
inkscape:cy="128"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
inkscape:window-width="1364"
|
||||
inkscape:window-height="688"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="26"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:grid-bbox="true" />
|
||||
<defs
|
||||
id="defs3699" />
|
||||
<metadata
|
||||
id="metadata3702">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
id="layer1"
|
||||
inkscape:groupmode="layer"
|
||||
inkscape:label="Capa 1">
|
||||
<rect
|
||||
style="fill:#0000ff"
|
||||
id="rect3715"
|
||||
width="287"
|
||||
height="276"
|
||||
x="-4"
|
||||
y="-2" />
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 4.5 KiB After Width: | Height: | Size: 4.5 KiB |
|
@ -0,0 +1,64 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="256px"
|
||||
height="256px"
|
||||
viewBox="0 0 256 256"
|
||||
version="1.1"
|
||||
id="SVGRoot"
|
||||
inkscape:version="0.92.2pre0 (973e216, 2017-07-25)"
|
||||
sodipodi:docname="green.svg">
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="1"
|
||||
inkscape:cx="128"
|
||||
inkscape:cy="128"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
inkscape:window-width="1364"
|
||||
inkscape:window-height="688"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="26"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:grid-bbox="true" />
|
||||
<defs
|
||||
id="defs3699" />
|
||||
<metadata
|
||||
id="metadata3702">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
id="layer1"
|
||||
inkscape:groupmode="layer"
|
||||
inkscape:label="Capa 1">
|
||||
<rect
|
||||
style="fill:#008000"
|
||||
id="rect3715"
|
||||
width="287"
|
||||
height="276"
|
||||
x="-4"
|
||||
y="-2" />
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 5.8 KiB After Width: | Height: | Size: 5.8 KiB |
|
@ -0,0 +1,64 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="256px"
|
||||
height="256px"
|
||||
viewBox="0 0 256 256"
|
||||
version="1.1"
|
||||
id="SVGRoot"
|
||||
inkscape:version="0.92.2pre0 (973e216, 2017-07-25)"
|
||||
sodipodi:docname="red.svg">
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="1"
|
||||
inkscape:cx="128"
|
||||
inkscape:cy="128"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
inkscape:window-width="1364"
|
||||
inkscape:window-height="688"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="26"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:grid-bbox="true" />
|
||||
<defs
|
||||
id="defs3699" />
|
||||
<metadata
|
||||
id="metadata3702">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
id="layer1"
|
||||
inkscape:groupmode="layer"
|
||||
inkscape:label="Capa 1">
|
||||
<rect
|
||||
style="fill:#ff0000"
|
||||
id="rect3715"
|
||||
width="287"
|
||||
height="276"
|
||||
x="-4"
|
||||
y="-2" />
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 10 KiB |
|
@ -0,0 +1,64 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="256px"
|
||||
height="256px"
|
||||
viewBox="0 0 256 256"
|
||||
version="1.1"
|
||||
id="SVGRoot"
|
||||
inkscape:version="0.92.2pre0 (973e216, 2017-07-25)"
|
||||
sodipodi:docname="yellow.svg">
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="1"
|
||||
inkscape:cx="128"
|
||||
inkscape:cy="128"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
inkscape:window-width="1364"
|
||||
inkscape:window-height="688"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="26"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:grid-bbox="true" />
|
||||
<defs
|
||||
id="defs3699" />
|
||||
<metadata
|
||||
id="metadata3702">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
id="layer1"
|
||||
inkscape:groupmode="layer"
|
||||
inkscape:label="Capa 1">
|
||||
<rect
|
||||
style="fill:#ffff00"
|
||||
id="rect3715"
|
||||
width="287"
|
||||
height="276"
|
||||
x="-4"
|
||||
y="-2" />
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 1.7 KiB |
|
@ -0,0 +1,324 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# This file is part of lims module for Tryton.
|
||||
# The COPYRIGHT file at the top level of this repository contains
|
||||
# the full copyright notices and license terms.
|
||||
from trytond.model import ModelView, ModelSQL, fields, Unique
|
||||
from trytond.pool import Pool
|
||||
from trytond.transaction import Transaction
|
||||
|
||||
__all__ = ['LaboratoryProfessional', 'Laboratory', 'LaboratoryCVCorrection',
|
||||
'LabMethod', 'LabDeviceType', 'LabDevice', 'LabDeviceLaboratory',
|
||||
'LabDeviceTypeLabMethod', ]
|
||||
|
||||
|
||||
class Laboratory(ModelSQL, ModelView):
|
||||
'Laboratory'
|
||||
__name__ = 'lims.laboratory'
|
||||
_rec_name = 'description'
|
||||
|
||||
code = fields.Char('Code', required=True)
|
||||
description = fields.Char('Description', required=True)
|
||||
default_laboratory_professional = fields.Many2One(
|
||||
'lims.laboratory.professional', 'Default professional')
|
||||
default_signer = fields.Many2One('lims.laboratory.professional',
|
||||
'Default signer', required=True)
|
||||
related_location = fields.Many2One('stock.location', 'Related location',
|
||||
required=True, domain=[('type', '=', 'storage')])
|
||||
cv_corrections = fields.One2Many('lims.laboratory.cv_correction',
|
||||
'laboratory', 'CV Corrections',
|
||||
help="Corrections for Coefficients of Variation (Control Charts)")
|
||||
section = fields.Selection([
|
||||
('amb', 'Ambient'),
|
||||
('for', 'Formulated'),
|
||||
('mi', 'Microbiology'),
|
||||
('rp', 'Agrochemical Residues'),
|
||||
('sq', 'Chemistry'),
|
||||
], 'Section', sort=False)
|
||||
headquarters = fields.Char('Headquarters', translate=True)
|
||||
|
||||
@classmethod
|
||||
def __setup__(cls):
|
||||
super(Laboratory, cls).__setup__()
|
||||
t = cls.__table__()
|
||||
cls._sql_constraints += [
|
||||
('code_uniq', Unique(t, t.code),
|
||||
'Laboratory code must be unique'),
|
||||
]
|
||||
|
||||
def get_rec_name(self, name):
|
||||
if self.code:
|
||||
return self.code + ' - ' + self.description
|
||||
else:
|
||||
return self.description
|
||||
|
||||
@classmethod
|
||||
def search_rec_name(cls, name, clause):
|
||||
field = None
|
||||
for field in ('code', 'description'):
|
||||
records = cls.search([(field,) + tuple(clause[1:])], limit=1)
|
||||
if records:
|
||||
break
|
||||
if records:
|
||||
return [(field,) + tuple(clause[1:])]
|
||||
return [(cls._rec_name,) + tuple(clause[1:])]
|
||||
|
||||
|
||||
class LaboratoryCVCorrection(ModelSQL, ModelView):
|
||||
'CV Correction'
|
||||
__name__ = 'lims.laboratory.cv_correction'
|
||||
|
||||
laboratory = fields.Many2One('lims.laboratory', 'Laboratory',
|
||||
required=True, ondelete='CASCADE', select=True)
|
||||
fraction_type = fields.Many2One('lims.fraction.type', 'Fraction type',
|
||||
required=True)
|
||||
min_cv = fields.Float('Minimum CV (%)')
|
||||
max_cv = fields.Float('Maximum CV (%)')
|
||||
min_cv_corr_fact = fields.Float('Correction factor for Minimum CV',
|
||||
help="Correction factor for CV between Min and Max")
|
||||
max_cv_corr_fact = fields.Float('Correction factor for Maximum CV',
|
||||
help="Correction factor for CV greater than Max")
|
||||
|
||||
|
||||
class LaboratoryProfessional(ModelSQL, ModelView):
|
||||
'Laboratory Professional'
|
||||
__name__ = 'lims.laboratory.professional'
|
||||
|
||||
party = fields.Many2One('party.party', 'Party', required=True,
|
||||
domain=[('is_lab_professional', '=', True)])
|
||||
code = fields.Char('Code')
|
||||
role = fields.Char('Signature role', translate=True)
|
||||
signature = fields.Binary('Signature')
|
||||
methods = fields.One2Many('lims.lab.professional.method', 'professional',
|
||||
'Methods')
|
||||
|
||||
@classmethod
|
||||
def __setup__(cls):
|
||||
super(LaboratoryProfessional, cls).__setup__()
|
||||
t = cls.__table__()
|
||||
cls._sql_constraints += [
|
||||
('code_uniq', Unique(t, t.code),
|
||||
'Professional code must be unique'),
|
||||
('party_uniq', Unique(t, t.party),
|
||||
'The party is already associated to a professional'),
|
||||
]
|
||||
|
||||
def get_rec_name(self, name):
|
||||
if self.party:
|
||||
return self.party.name
|
||||
|
||||
@classmethod
|
||||
def search_rec_name(cls, name, clause):
|
||||
return [('party',) + tuple(clause[1:])]
|
||||
|
||||
@classmethod
|
||||
def get_lab_professional(cls):
|
||||
cursor = Transaction().connection.cursor()
|
||||
login_user_id = Transaction().user
|
||||
cursor.execute('SELECT id '
|
||||
'FROM party_party '
|
||||
'WHERE is_lab_professional = true '
|
||||
'AND lims_user = %s '
|
||||
'LIMIT 1', (login_user_id,))
|
||||
party_id = cursor.fetchone()
|
||||
if not party_id:
|
||||
return None
|
||||
cursor.execute('SELECT id '
|
||||
'FROM "' + cls._table + '" '
|
||||
'WHERE party = %s '
|
||||
'LIMIT 1', (party_id[0],))
|
||||
lab_professional_id = cursor.fetchone()
|
||||
if (lab_professional_id):
|
||||
return lab_professional_id[0]
|
||||
return None
|
||||
|
||||
|
||||
class LabMethod(ModelSQL, ModelView):
|
||||
'Laboratory Method'
|
||||
__name__ = 'lims.lab.method'
|
||||
|
||||
code = fields.Char('Code', required=True)
|
||||
name = fields.Char('Name', required=True, translate=True)
|
||||
reference = fields.Char('Reference')
|
||||
determination = fields.Char('Determination', required=True)
|
||||
requalification_months = fields.Integer('Requalification months',
|
||||
required=True)
|
||||
supervised_requalification = fields.Boolean('Supervised requalification')
|
||||
deprecated_since = fields.Date('Deprecated since')
|
||||
pnt = fields.Char('PNT')
|
||||
results_estimated_waiting = fields.Integer(
|
||||
'Estimated number of days for results')
|
||||
|
||||
@classmethod
|
||||
def __setup__(cls):
|
||||
super(LabMethod, cls).__setup__()
|
||||
t = cls.__table__()
|
||||
cls._sql_constraints += [
|
||||
('code_uniq', Unique(t, t.code),
|
||||
'Method code must be unique'),
|
||||
]
|
||||
|
||||
def get_rec_name(self, name):
|
||||
if self.code:
|
||||
return self.code + ' - ' + self.name
|
||||
else:
|
||||
return self.name
|
||||
|
||||
@classmethod
|
||||
def search_rec_name(cls, name, clause):
|
||||
field = None
|
||||
for field in ('code', 'name'):
|
||||
records = cls.search([(field,) + tuple(clause[1:])], limit=1)
|
||||
if records:
|
||||
break
|
||||
if records:
|
||||
return [(field,) + tuple(clause[1:])]
|
||||
return [(cls._rec_name,) + tuple(clause[1:])]
|
||||
|
||||
@classmethod
|
||||
def write(cls, *args):
|
||||
super(LabMethod, cls).write(*args)
|
||||
actions = iter(args)
|
||||
for methods, vals in zip(actions, actions):
|
||||
if 'results_estimated_waiting' in vals:
|
||||
cls.update_laboratory_notebook(methods)
|
||||
|
||||
@classmethod
|
||||
def update_laboratory_notebook(cls, methods):
|
||||
LimsNotebookLine = Pool().get('lims.notebook.line')
|
||||
|
||||
for method in methods:
|
||||
notebook_lines = LimsNotebookLine.search([
|
||||
('method', '=', method.id),
|
||||
('accepted', '=', False),
|
||||
])
|
||||
if notebook_lines:
|
||||
LimsNotebookLine.write(notebook_lines, {
|
||||
'results_estimated_waiting': (
|
||||
method.results_estimated_waiting),
|
||||
})
|
||||
|
||||
|
||||
class LabDevice(ModelSQL, ModelView):
|
||||
'Laboratory Device'
|
||||
__name__ = 'lims.lab.device'
|
||||
_rec_name = 'description'
|
||||
|
||||
code = fields.Char('Code', required=True)
|
||||
description = fields.Char('Description', required=True)
|
||||
device_type = fields.Many2One('lims.lab.device.type', 'Device type',
|
||||
required=True)
|
||||
laboratories = fields.One2Many('lims.lab.device.laboratory', 'device',
|
||||
'Laboratories', required=True)
|
||||
serial_number = fields.Char('Serial number')
|
||||
|
||||
@classmethod
|
||||
def __setup__(cls):
|
||||
super(LabDevice, cls).__setup__()
|
||||
t = cls.__table__()
|
||||
cls._sql_constraints += [
|
||||
('code_uniq', Unique(t, t.code),
|
||||
'Device code must be unique'),
|
||||
]
|
||||
|
||||
def get_rec_name(self, name):
|
||||
if self.code:
|
||||
return self.code + ' - ' + self.description
|
||||
else:
|
||||
return self.description
|
||||
|
||||
@classmethod
|
||||
def search_rec_name(cls, name, clause):
|
||||
field = None
|
||||
for field in ('code', 'description'):
|
||||
records = cls.search([(field,) + tuple(clause[1:])], limit=1)
|
||||
if records:
|
||||
break
|
||||
if records:
|
||||
return [(field,) + tuple(clause[1:])]
|
||||
return [(cls._rec_name,) + tuple(clause[1:])]
|
||||
|
||||
|
||||
class LabDeviceType(ModelSQL, ModelView):
|
||||
'Laboratory Device Type'
|
||||
__name__ = 'lims.lab.device.type'
|
||||
_rec_name = 'description'
|
||||
|
||||
code = fields.Char('Code', required=True)
|
||||
description = fields.Char('Description', required=True)
|
||||
methods = fields.Many2Many('lims.lab.device.type-lab.method',
|
||||
'device_type', 'method', 'Methods')
|
||||
|
||||
@classmethod
|
||||
def __setup__(cls):
|
||||
super(LabDeviceType, cls).__setup__()
|
||||
t = cls.__table__()
|
||||
cls._sql_constraints += [
|
||||
('code_uniq', Unique(t, t.code),
|
||||
'Device type code must be unique'),
|
||||
]
|
||||
|
||||
def get_rec_name(self, name):
|
||||
if self.code:
|
||||
return self.code + ' - ' + self.description
|
||||
else:
|
||||
return self.description
|
||||
|
||||
@classmethod
|
||||
def search_rec_name(cls, name, clause):
|
||||
field = None
|
||||
for field in ('code', 'description'):
|
||||
records = cls.search([(field,) + tuple(clause[1:])], limit=1)
|
||||
if records:
|
||||
break
|
||||
if records:
|
||||
return [(field,) + tuple(clause[1:])]
|
||||
return [(cls._rec_name,) + tuple(clause[1:])]
|
||||
|
||||
|
||||
class LabDeviceTypeLabMethod(ModelSQL):
|
||||
'Laboratory Device Type - Laboratory Method'
|
||||
__name__ = 'lims.lab.device.type-lab.method'
|
||||
|
||||
device_type = fields.Many2One('lims.lab.device.type', 'Device type',
|
||||
ondelete='CASCADE', select=True, required=True)
|
||||
method = fields.Many2One('lims.lab.method', 'Method',
|
||||
ondelete='CASCADE', select=True, required=True)
|
||||
|
||||
|
||||
class LabDeviceLaboratory(ModelSQL, ModelView):
|
||||
'Laboratory Device Laboratory'
|
||||
__name__ = 'lims.lab.device.laboratory'
|
||||
|
||||
device = fields.Many2One('lims.lab.device', 'Device', required=True,
|
||||
ondelete='CASCADE', select=True)
|
||||
laboratory = fields.Many2One('lims.laboratory', 'Laboratory',
|
||||
required=True)
|
||||
physically_here = fields.Boolean('Physically here')
|
||||
|
||||
@classmethod
|
||||
def __setup__(cls):
|
||||
super(LabDeviceLaboratory, cls).__setup__()
|
||||
cls._error_messages.update({
|
||||
'physically_elsewhere': ('This Device is physically in another'
|
||||
' Laboratory'),
|
||||
})
|
||||
|
||||
@staticmethod
|
||||
def default_physically_here():
|
||||
return True
|
||||
|
||||
@classmethod
|
||||
def validate(cls, laboratories):
|
||||
super(LabDeviceLaboratory, cls).validate(laboratories)
|
||||
for l in laboratories:
|
||||
l.check_location()
|
||||
|
||||
def check_location(self):
|
||||
if self.physically_here:
|
||||
laboratories = self.search([
|
||||
('device', '=', self.device.id),
|
||||
('physically_here', '=', True),
|
||||
('id', '!=', self.id),
|
||||
])
|
||||
if laboratories:
|
||||
self.raise_user_error('physically_elsewhere')
|
|
@ -0,0 +1,306 @@
|
|||
<?xml version="1.0"?>
|
||||
<tryton>
|
||||
<data>
|
||||
|
||||
<record model="ir.ui.icon" id="lab_icon">
|
||||
<field name="name">lims-lab</field>
|
||||
<field name="path">icons/lab_icon.svg</field>
|
||||
</record>
|
||||
<record model="ir.ui.icon" id="laboratory_icon">
|
||||
<field name="name">lims-laboratory</field>
|
||||
<field name="path">icons/laboratory.svg</field>
|
||||
</record>
|
||||
<record model="ir.ui.icon" id="yellow_icon">
|
||||
<field name="name">lims-yellow</field>
|
||||
<field name="path">icons/yellow.svg</field>
|
||||
</record>
|
||||
<record model="ir.ui.icon" id="red_icon">
|
||||
<field name="name">lims-red</field>
|
||||
<field name="path">icons/red.svg</field>
|
||||
</record>
|
||||
<record model="ir.ui.icon" id="blue_icon">
|
||||
<field name="name">lims-blue</field>
|
||||
<field name="path">icons/blue.svg</field>
|
||||
</record>
|
||||
<record model="ir.ui.icon" id="green_icon">
|
||||
<field name="name">lims-green</field>
|
||||
<field name="path">icons/green.svg</field>
|
||||
</record>
|
||||
|
||||
<menuitem name="LIMS"
|
||||
id="lims_menu" icon="lims-lab"/>
|
||||
|
||||
<!-- Laboratory -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_laboratory_view_form">
|
||||
<field name="model">lims.laboratory</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">laboratory_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_laboratory_view_list">
|
||||
<field name="model">lims.laboratory</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">laboratory_list</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.act_window" id="act_lims_laboratory_list">
|
||||
<field name="name">Laboratories</field>
|
||||
<field name="res_model">lims.laboratory</field>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_lims_laboratory_view_list">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="lims_laboratory_view_list"/>
|
||||
<field name="act_window" ref="act_lims_laboratory_list"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_lims_laboratory_view_form">
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="view" ref="lims_laboratory_view_form"/>
|
||||
<field name="act_window" ref="act_lims_laboratory_list"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.rule.group" id="rule_group_laboratory">
|
||||
<field name="model" search="[('model', '=', 'lims.laboratory')]"/>
|
||||
<field name="global_p" eval="True"/>
|
||||
</record>
|
||||
<record model="ir.rule" id="rule_laboratory">
|
||||
<field name="domain"
|
||||
eval="[If(Bool(Eval('user', {}).get('laboratories', False)), ('id', 'in', Eval('user', {}).get('laboratories', [])), ('id', '!=', 0))]"
|
||||
pyson="1"/>
|
||||
<field name="rule_group" ref="rule_group_laboratory"/>
|
||||
</record>
|
||||
|
||||
<!-- Laboratory CV Correction -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_laboratory_cv_correction_view_form">
|
||||
<field name="model">lims.laboratory.cv_correction</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">laboratory_cv_correction_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_laboratory_cv_correction_view_list">
|
||||
<field name="model">lims.laboratory.cv_correction</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">laboratory_cv_correction_list</field>
|
||||
</record>
|
||||
|
||||
<!-- Laboratory Professional -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_laboratory_professional_view_form">
|
||||
<field name="model">lims.laboratory.professional</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">laboratory_professional_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_laboratory_professional_view_list">
|
||||
<field name="model">lims.laboratory.professional</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">laboratory_professional_list</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.act_window" id="act_lims_laboratory_professional_list">
|
||||
<field name="name">Laboratory Professionals</field>
|
||||
<field name="res_model">lims.laboratory.professional</field>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_lims_laboratory_professional_view_list">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="lims_laboratory_professional_view_list"/>
|
||||
<field name="act_window" ref="act_lims_laboratory_professional_list"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_lims_laboratory_professional_view_form">
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="view" ref="lims_laboratory_professional_view_form"/>
|
||||
<field name="act_window" ref="act_lims_laboratory_professional_list"/>
|
||||
</record>
|
||||
|
||||
<!-- Laboratory Method -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_lab_method_view_form">
|
||||
<field name="model">lims.lab.method</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">lab_method_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_lab_method_view_list">
|
||||
<field name="model">lims.lab.method</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">lab_method_list</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.act_window" id="act_lims_lab_method_list">
|
||||
<field name="name">Methods</field>
|
||||
<field name="res_model">lims.lab.method</field>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_lims_lab_method_view_list">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="lims_lab_method_view_list"/>
|
||||
<field name="act_window" ref="act_lims_lab_method_list"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_lims_lab_method_view_form">
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="view" ref="lims_lab_method_view_form"/>
|
||||
<field name="act_window" ref="act_lims_lab_method_list"/>
|
||||
</record>
|
||||
|
||||
<!-- Laboratory Device -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_lab_device_view_form">
|
||||
<field name="model">lims.lab.device</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">lab_device_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_lab_device_view_list">
|
||||
<field name="model">lims.lab.device</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">lab_device_list</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.act_window" id="act_lims_lab_device_list">
|
||||
<field name="name">Devices</field>
|
||||
<field name="res_model">lims.lab.device</field>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_lims_lab_device_view_list">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="lims_lab_device_view_list"/>
|
||||
<field name="act_window" ref="act_lims_lab_device_list"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_lims_lab_device_view_form">
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="view" ref="lims_lab_device_view_form"/>
|
||||
<field name="act_window" ref="act_lims_lab_device_list"/>
|
||||
</record>
|
||||
|
||||
<!-- Laboratory Device Type -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_lab_device_type_view_form">
|
||||
<field name="model">lims.lab.device.type</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">lab_device_type_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_lab_device_type_view_list">
|
||||
<field name="model">lims.lab.device.type</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">lab_device_type_list</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.act_window" id="act_lims_lab_device_type_list">
|
||||
<field name="name">Device types</field>
|
||||
<field name="res_model">lims.lab.device.type</field>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_lims_lab_device_type_view_list">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="lims_lab_device_type_view_list"/>
|
||||
<field name="act_window" ref="act_lims_lab_device_type_list"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_lims_lab_device_type_view_form">
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="view" ref="lims_lab_device_type_view_form"/>
|
||||
<field name="act_window" ref="act_lims_lab_device_type_list"/>
|
||||
</record>
|
||||
|
||||
<!-- Laboratory Device Laboratory -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_lab_device_laboratory_view_form">
|
||||
<field name="model">lims.lab.device.laboratory</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">lab_device_laboratory_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_lab_device_laboratory_view_list">
|
||||
<field name="model">lims.lab.device.laboratory</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">lab_device_laboratory_list</field>
|
||||
</record>
|
||||
|
||||
<!-- Configuration / Laboratory -->
|
||||
|
||||
<menuitem name="Laboratory" parent="lims_menu"
|
||||
id="lims_laboratory" sequence="50"
|
||||
icon="lims-laboratory"/>
|
||||
|
||||
<record model="ir.model.access" id="access_laboratory">
|
||||
<field name="model" search="[('model', '=', 'lims.laboratory')]"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
<field name="perm_create" eval="False"/>
|
||||
<field name="perm_delete" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.access" id="access_laboratory_group_conf_laboratory_admin">
|
||||
<field name="model" search="[('model', '=', 'lims.laboratory')]"/>
|
||||
<field name="group" ref="group_lims_conf_laboratory_admin"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
<field name="perm_create" eval="True"/>
|
||||
<field name="perm_delete" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.access" id="access_laboratory_professional">
|
||||
<field name="model" search="[('model', '=', 'lims.laboratory.professional')]"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
<field name="perm_create" eval="False"/>
|
||||
<field name="perm_delete" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.access" id="access_laboratory_professional_group_conf_laboratory_admin">
|
||||
<field name="model" search="[('model', '=', 'lims.laboratory.professional')]"/>
|
||||
<field name="group" ref="group_lims_conf_laboratory_admin"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
<field name="perm_create" eval="True"/>
|
||||
<field name="perm_delete" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.access" id="access_lab_device_type">
|
||||
<field name="model" search="[('model', '=', 'lims.lab.device.type')]"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
<field name="perm_create" eval="False"/>
|
||||
<field name="perm_delete" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.access" id="access_lab_device_type_group_conf_laboratory_admin">
|
||||
<field name="model" search="[('model', '=', 'lims.lab.device.type')]"/>
|
||||
<field name="group" ref="group_lims_conf_laboratory_admin"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
<field name="perm_create" eval="True"/>
|
||||
<field name="perm_delete" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.access" id="access_lab_device">
|
||||
<field name="model" search="[('model', '=', 'lims.lab.device')]"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
<field name="perm_create" eval="False"/>
|
||||
<field name="perm_delete" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.access" id="access_lab_device_group_conf_laboratory_admin">
|
||||
<field name="model" search="[('model', '=', 'lims.lab.device')]"/>
|
||||
<field name="group" ref="group_lims_conf_laboratory_admin"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
<field name="perm_create" eval="True"/>
|
||||
<field name="perm_delete" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.access" id="access_lab_method">
|
||||
<field name="model" search="[('model', '=', 'lims.lab.method')]"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
<field name="perm_create" eval="False"/>
|
||||
<field name="perm_delete" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.access" id="access_lab_method_group_conf_base_tables_admin">
|
||||
<field name="model" search="[('model', '=', 'lims.lab.method')]"/>
|
||||
<field name="group" ref="group_lims_conf_base_tables_admin"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
<field name="perm_create" eval="True"/>
|
||||
<field name="perm_delete" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.menu-res.group" id="menu_lims_group_conf_laboratory_readonly">
|
||||
<field name="menu" ref="lims_menu"/>
|
||||
<field name="group" ref="group_lims_conf_laboratory_readonly"/>
|
||||
</record>
|
||||
<record model="ir.ui.menu-res.group" id="menu_lims_group_conf_laboratory_admin">
|
||||
<field name="menu" ref="lims_menu"/>
|
||||
<field name="group" ref="group_lims_conf_laboratory_admin"/>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</tryton>
|
8004
lims/lims.py
|
@ -1,248 +0,0 @@
|
|||
<?xml version="1.0"?>
|
||||
<tryton>
|
||||
<data>
|
||||
|
||||
<!-- Create the Lims icons -->
|
||||
|
||||
<record model="ir.ui.icon" id="lab_icon">
|
||||
<field name="name">lims-lab</field>
|
||||
<field name="path">icons/lab_icon.svg</field>
|
||||
</record>
|
||||
<record model="ir.ui.icon" id="configuration_icon">
|
||||
<field name="name">lims-configuration</field>
|
||||
<field name="path">icons/configuration.svg</field>
|
||||
</record>
|
||||
<record model="ir.ui.icon" id="entry_board_icon">
|
||||
<field name="name">lims-entry_board</field>
|
||||
<field name="path">icons/entry_board.svg</field>
|
||||
</record>
|
||||
<record model="ir.ui.icon" id="laboratory_icon">
|
||||
<field name="name">lims-laboratory</field>
|
||||
<field name="path">icons/laboratory.svg</field>
|
||||
</record>
|
||||
<record model="ir.ui.icon" id="notebook_icon">
|
||||
<field name="name">lims-notebook</field>
|
||||
<field name="path">icons/notebook.svg</field>
|
||||
</record>
|
||||
<record model="ir.ui.icon" id="notebook_line_all_menu_icon">
|
||||
<field name="name">lims-notebook_line_all_menu</field>
|
||||
<field name="path">icons/notebook_line_all_menu.svg</field>
|
||||
</record>
|
||||
<record model="ir.ui.icon" id="laboratory_results_icon">
|
||||
<field name="name">lims-laboratory_results</field>
|
||||
<field name="path">icons/laboratory_results.svg</field>
|
||||
</record>
|
||||
<record model="ir.ui.icon" id="notebook_load_results_manual_icon">
|
||||
<field name="name">lims-notebook_load_results_manual</field>
|
||||
<field name="path">icons/notebook_load_results_manual.svg</field>
|
||||
</record>
|
||||
<record model="ir.ui.icon" id="notebook_load_results_formula_icon">
|
||||
<field name="name">lims-notebook_load_results_formula</field>
|
||||
<field name="path">icons/notebook_load_results_formula.svg</field>
|
||||
</record>
|
||||
<record model="ir.ui.icon" id="laboratory_reports_icon">
|
||||
<field name="name">lims-laboratory_reports</field>
|
||||
<field name="path">icons/laboratory_reports.svg</field>
|
||||
</record>
|
||||
<record model="ir.ui.icon" id="generate_results_report_icon">
|
||||
<field name="name">lims-generate_results_report</field>
|
||||
<field name="path">icons/generate_results_report.svg</field>
|
||||
</record>
|
||||
<record model="ir.ui.icon" id="results_report_version_detail_icon">
|
||||
<field name="name">lims-results_report_version_detail</field>
|
||||
<field name="path">icons/results_report_version_detail.svg</field>
|
||||
</record>
|
||||
<record model="ir.ui.icon" id="laboratory_control_icon">
|
||||
<field name="name">lims-laboratory_control</field>
|
||||
<field name="path">icons/laboratory_control.svg</field>
|
||||
</record>
|
||||
<record model="ir.ui.icon" id="tendencies_icon">
|
||||
<field name="name">lims-tendencies</field>
|
||||
<field name="path">icons/tendencies.svg</field>
|
||||
</record>
|
||||
<record model="ir.ui.icon" id="concentration_level_icon">
|
||||
<field name="name">lims-concentration_level</field>
|
||||
<field name="path">icons/concentration_level.svg</field>
|
||||
</record>
|
||||
<record model="ir.ui.icon" id="control_means_deviations_calc_icon">
|
||||
<field name="name">lims-control_means_deviations_calc</field>
|
||||
<field name="path">icons/control_means_deviations_calc.svg</field>
|
||||
</record>
|
||||
<record model="ir.ui.icon" id="tendencies_analysis_icon">
|
||||
<field name="name">lims-tendencies_analysis</field>
|
||||
<field name="path">icons/tendencies_analysis.svg</field>
|
||||
</record>
|
||||
|
||||
<!-- Menu -->
|
||||
|
||||
<menuitem name="LIMS"
|
||||
id="lims_menu" icon="lims-lab"/>
|
||||
|
||||
<!-- Configuration -->
|
||||
<menuitem name="Configuration" parent="lims_menu"
|
||||
id="lims_config" sequence="10" icon="lims-configuration"/>
|
||||
|
||||
<!-- Configuration / Base -->
|
||||
<menuitem name="Base" parent="lims_config"
|
||||
id="lims_config_base" sequence="10"/>
|
||||
<menuitem parent="lims_config_base" action="act_lims_configuration"
|
||||
id="lims_configuration_menu" sequence="10"/>
|
||||
<menuitem parent="lims_config_base" action="act_lims_workyear_list"
|
||||
id="lims_workyear_menu" sequence="20"/>
|
||||
<menuitem parent="lims_config_base" action="act_printer_list"
|
||||
id="lims_printer_menu" sequence="30"/>
|
||||
|
||||
<!-- Configuration / Certification -->
|
||||
<menuitem name="Certification" parent="lims_config"
|
||||
id="lims_config_certification" sequence="20"/>
|
||||
<menuitem parent="lims_config_certification" action="act_lims_certification_type_list"
|
||||
id="lims_certification_type_list_menu" sequence="10"/>
|
||||
<menuitem parent="lims_config_certification" action="act_lims_analysis_family_list"
|
||||
id="lims_analysis_family_menu" sequence="20"/>
|
||||
<menuitem parent="lims_config_certification" action="act_lims_technical_scope_list"
|
||||
id="lims_technical_scope_menu" sequence="30"/>
|
||||
<menuitem parent="lims_technical_scope_menu" action="act_lims_technical_scope_version_list"
|
||||
id="lims_technical_scope_version_menu" sequence="10"/>
|
||||
|
||||
<!-- Configuration / Entry -->
|
||||
<menuitem name="Entry" parent="lims_config"
|
||||
id="lims_config_entry" sequence="30"/>
|
||||
<menuitem parent="lims_config_entry" action="act_lims_packaging_type_list"
|
||||
id="lims_packaging_type_menu" sequence="10"/>
|
||||
<menuitem parent="lims_config_entry" action="act_lims_packaging_integrity_list"
|
||||
id="lims_packaging_integrity_menu" sequence="20"/>
|
||||
<menuitem parent="lims_config_entry" action="act_lims_variety_list"
|
||||
id="lims_variety_menu" sequence="30"/>
|
||||
<menuitem parent="lims_config_entry" action="act_lims_zone_list"
|
||||
id="lims_zone_menu" sequence="40"/>
|
||||
<menuitem parent="lims_config_entry" action="act_lims_entry_suspension_reason_list"
|
||||
id="lims_entry_suspension_reason_menu" sequence="50"/>
|
||||
|
||||
<!-- Configuration / Laboratory -->
|
||||
<menuitem name="Laboratory" parent="lims_config"
|
||||
id="lims_config_laboratory" sequence="40"/>
|
||||
<menuitem parent="lims_config_laboratory" action="act_lims_laboratory_list"
|
||||
id="lims_laboratory_menu" sequence="10"/>
|
||||
<menuitem parent="lims_config_laboratory" action="act_lims_laboratory_professional_list"
|
||||
id="lims_laboratory_professional_menu" sequence="20"/>
|
||||
<menuitem parent="lims_config_laboratory" action="act_lims_notebook_views_list"
|
||||
id="lims_notebook_views_menu" sequence="30"/>
|
||||
<menuitem parent="lims_config_laboratory" action="act_lims_lab_device_type_list"
|
||||
id="lims_lab_device_type_menu" sequence="40"/>
|
||||
<menuitem parent="lims_config_laboratory" action="act_lims_lab_device_list"
|
||||
id="lims_lab_device_menu" sequence="50"/>
|
||||
|
||||
<!-- Configuration / Base Tables -->
|
||||
<menuitem name="Base Tables" parent="lims_config"
|
||||
id="lims_config_base_tables" sequence="70"/>
|
||||
<menuitem parent="lims_config_base_tables" action="act_lims_product_type_list"
|
||||
id="lims_product_type_menu" sequence="10"/>
|
||||
<menuitem parent="lims_config_base_tables" action="act_lims_matrix_list"
|
||||
id="lims_matrix_menu" sequence="20"/>
|
||||
<menuitem parent="lims_config_base_tables" action="act_lims_lab_method_list"
|
||||
id="lims_lab_method_menu" sequence="30"/>
|
||||
<menuitem parent="lims_config_base_tables" action="act_lims_formula_list"
|
||||
id="lims_formula_list_menu" sequence="40"/>
|
||||
<menuitem parent="lims_config_base_tables" action="act_lims_analysis_list"
|
||||
id="lims_analysis_menu" sequence="50"/>
|
||||
<menuitem parent="lims_config_base_tables" action="act_lims_typification_list"
|
||||
id="lims_typification_menu" sequence="60"/>
|
||||
<menuitem parent="lims_typification_menu" action="act_lims_typification_calculated_readonly_list"
|
||||
id="lims_typification_calculated_menu" sequence="10"/>
|
||||
<menuitem parent="lims_config_base_tables" action="act_lims_fraction_type_list"
|
||||
id="lims_fraction_type_menu" sequence="70"/>
|
||||
<menuitem parent="lims_config_base_tables" action="act_lims_range_type_list"
|
||||
id="lims_range_type_list_menu" sequence="80"/>
|
||||
<menuitem parent="lims_config_base_tables" action="act_lims_range_list"
|
||||
id="lims_range_list_menu" sequence="90"/>
|
||||
<menuitem parent="lims_config_base_tables" action="act_lims_volume_conversion_list"
|
||||
id="lims_volume_conversion_list_menu" sequence="100"/>
|
||||
<menuitem parent="lims_config_base_tables" action="act_lims_uom_conversion_list"
|
||||
id="lims_uom_conversion_list_menu" sequence="110"/>
|
||||
|
||||
<!-- Entries Board -->
|
||||
<menuitem parent="lims_menu" name="Entries Board"
|
||||
id="lims_entry_board_menu" sequence="30" icon="lims-entry_board"/>
|
||||
<!-- <menuitem parent="lims_entry_board_menu" action="wiz_lims_create_entry"
|
||||
id="lims_create_entry_menu" sequence="5"/>-->
|
||||
<menuitem parent="lims_entry_board_menu" action="act_lims_entry_form"
|
||||
id="lims_entry_form_menu" sequence="10" icon="tryton-new"/>
|
||||
<menuitem parent="lims_entry_board_menu" action="act_lims_entry_list"
|
||||
id="lims_entry_menu" sequence="20" icon="tryton-list"/>
|
||||
<menuitem parent="lims_entry_board_menu" action="act_lims_sample_list"
|
||||
id="lims_sample_menu" sequence="30"/>
|
||||
<menuitem parent="lims_entry_board_menu" action="act_lims_fraction_list"
|
||||
id="lims_fraction_menu" sequence="40"/>
|
||||
<menuitem parent="lims_fraction_menu" action="wizard_fractions_by_locations"
|
||||
id="lims_fractions_by_locations_menu" sequence="10"/>
|
||||
<menuitem parent="lims_entry_board_menu" action="act_lims_service_list"
|
||||
id="lims_service_menu" sequence="50"/>
|
||||
<menuitem parent="lims_entry_board_menu" action="act_lims_entry_detail_analysis_list"
|
||||
id="lims_entry_detail_analysis_menu" sequence="60"/>
|
||||
|
||||
<!-- Laboratory -->
|
||||
<menuitem name="Laboratory" parent="lims_menu"
|
||||
id="lims_laboratory" sequence="50"
|
||||
icon="lims-laboratory"/>
|
||||
<menuitem parent="lims_laboratory" action="act_lims_notebook_list"
|
||||
id="lims_notebook_menu" sequence="15"
|
||||
icon="lims-notebook"/>
|
||||
<menuitem parent="lims_notebook_menu" action="act_lims_notebook_line_all_fields_list"
|
||||
id="lims_notebook_line_all_menu" sequence="10"
|
||||
icon="lims-notebook_line_all_menu"/>
|
||||
<menuitem parent="lims_notebook_line_all_menu" action="wiz_print_analysis_pending_inform"
|
||||
id="menu_print_analysis_pending_inform" sequence="100"
|
||||
icon="tryton-print"/>
|
||||
<menuitem parent="lims_notebook_line_all_menu" action="wiz_print_analysis_checked_pending_inform"
|
||||
id="menu_print_analysis_checked_pending_inform" sequence="100"
|
||||
icon="tryton-print"/>
|
||||
|
||||
<!-- Laboratory / Results entry -->
|
||||
<menuitem name="Results entry" parent="lims_laboratory"
|
||||
id="lims_laboratory_results" sequence="20"
|
||||
icon="lims-laboratory_results"/>
|
||||
<menuitem parent="lims_laboratory_results" action="wiz_lims_notebook_load_results_manual"
|
||||
id="lims_notebook_load_results_manual_menu" sequence="10"
|
||||
icon="lims-notebook_load_results_manual"/>
|
||||
<menuitem parent="lims_laboratory_results" action="wiz_lims_notebook_load_results_formula"
|
||||
id="lims_notebook_load_results_formula_menu" sequence="20"
|
||||
icon="lims-notebook_load_results_formula"/>
|
||||
|
||||
<!-- Laboratory / Results reports -->
|
||||
<menuitem name="Results reports" parent="lims_laboratory"
|
||||
id="lims_laboratory_reports" sequence="30"
|
||||
icon="lims-laboratory_reports"/>
|
||||
<menuitem parent="lims_laboratory_reports" action="act_lims_results_report"
|
||||
id="lims_results_report_menu" sequence="10"
|
||||
icon="lims-laboratory_reports"/>
|
||||
<menuitem parent="lims_laboratory_reports" action="wiz_lims_generate_results_report"
|
||||
id="lims_generate_results_report_menu" sequence="20"
|
||||
icon="lims-generate_results_report"/>
|
||||
<menuitem parent="lims_laboratory_reports" action="act_lims_results_report_version_detail"
|
||||
id="lims_results_report_version_detail_menu" sequence="30"
|
||||
icon="lims-results_report_version_detail"/>
|
||||
|
||||
<!-- Laboratory / Control Charts -->
|
||||
<menuitem name="Control Charts" parent="lims_laboratory"
|
||||
id="lims_laboratory_control" sequence="40"
|
||||
icon="lims-laboratory_control"/>
|
||||
<menuitem parent="lims_laboratory_control" action="act_lims_control_tendency"
|
||||
id="lims_control_tendency_menu" sequence="10"
|
||||
icon="lims-tendencies"/>
|
||||
<menuitem parent="lims_laboratory_control" action="act_lims_concentration_level"
|
||||
id="lims_concentration_level_menu" sequence="20"
|
||||
icon="lims-concentration_level"/>
|
||||
<menuitem parent="lims_laboratory_control" action="wiz_lims_control_means_deviations_calc"
|
||||
id="lims_control_means_deviations_calc_menu" sequence="30"
|
||||
icon="lims-control_means_deviations_calc"/>
|
||||
<menuitem parent="lims_laboratory_control" action="wiz_lims_control_tendencies_analysis"
|
||||
id="lims_control_tendencies_analysis_menu" sequence="40"
|
||||
icon="lims-tendencies_analysis"/>
|
||||
|
||||
<!-- Other menu items -->
|
||||
|
||||
<menuitem parent="res.menu_res" action="act_lims_user_role_list"
|
||||
id="lims_user_role_menu" sequence="5"/>
|
||||
|
||||
</data>
|
||||
</tryton>
|
|
@ -1,218 +0,0 @@
|
|||
<?xml version="1.0"?>
|
||||
<tryton>
|
||||
<data>
|
||||
|
||||
<!-- Acknowledgment of Samples Receipt -->
|
||||
|
||||
<record model="ir.action.wizard" id="print_entry_acknowledgment">
|
||||
<field name="name">Acknowledgment of Samples Receipt</field>
|
||||
<field name="wiz_name">lims.entry.acknowledgment.print</field>
|
||||
<field name="model">lims.entry</field>
|
||||
</record>
|
||||
<record model="ir.action.report" id="report_entry_acknowledgment">
|
||||
<field name="name">Acknowledgment of Samples Receipt</field>
|
||||
<field name="model">lims.entry</field>
|
||||
<field name="report_name">lims.entry.acknowledgment.report</field>
|
||||
<field name="report">lims/report/entry_acknowledgment_report.odt</field>
|
||||
</record>
|
||||
<record model="ir.action.keyword" id="report_entry_acknowledgment_keyword">
|
||||
<field name="keyword">form_print</field>
|
||||
<field name="model">lims.entry,-1</field>
|
||||
<field name="action" ref="print_entry_acknowledgment"/>
|
||||
</record>
|
||||
|
||||
<!-- Entry Detail -->
|
||||
|
||||
<record model="ir.action.report" id="report_entry_detail">
|
||||
<field name="name">Entry Detail</field>
|
||||
<field name="model">lims.entry</field>
|
||||
<field name="report_name">lims.entry.detail.report</field>
|
||||
<field name="report">lims/report/entry_detail_report.odt</field>
|
||||
</record>
|
||||
<record model="ir.action.keyword" id="report_entry_detail_keyword">
|
||||
<field name="keyword">form_print</field>
|
||||
<field name="model">lims.entry,-1</field>
|
||||
<field name="action" ref="report_entry_detail"/>
|
||||
</record>
|
||||
|
||||
<!-- Entry Labels -->
|
||||
|
||||
<record model="ir.action.report" id="report_entry_labels">
|
||||
<field name="name">Entry Labels</field>
|
||||
<field name="model">lims.entry</field>
|
||||
<field name="report_name">lims.entry.labels.report</field>
|
||||
<field name="report">lims/report/entry_labels_report.odt</field>
|
||||
</record>
|
||||
<record model="ir.action.keyword" id="report_entry_labels_keyword">
|
||||
<field name="keyword">form_print</field>
|
||||
<field name="model">lims.entry,-1</field>
|
||||
<field name="action" ref="report_entry_labels"/>
|
||||
</record>
|
||||
|
||||
<!-- Entry Labels Printer -->
|
||||
|
||||
<record model="ir.action.wizard" id="wiz_report_entry_labels_printer">
|
||||
<field name="name">Entry Labels Printer</field>
|
||||
<field name="wiz_name">lims.entry.labels.printer.report</field>
|
||||
<field name="model">lims.entry</field>
|
||||
</record>
|
||||
<record model="ir.action.keyword"
|
||||
id="wiz_report_entry_labels_printer_keyword">
|
||||
<field name="keyword">form_print</field>
|
||||
<field name="model">lims.entry,-1</field>
|
||||
<field name="action" ref="wiz_report_entry_labels_printer"/>
|
||||
</record>
|
||||
|
||||
<!-- Sample Labels Printer -->
|
||||
|
||||
<record model="ir.action.wizard" id="wiz_report_sample_labels_printer">
|
||||
<field name="name">Sample Labels Printer</field>
|
||||
<field name="wiz_name">lims.sample.labels.printer.report</field>
|
||||
<field name="model">lims.sample</field>
|
||||
</record>
|
||||
<record model="ir.action.keyword"
|
||||
id="wiz_report_sample_labels_printer_keyword">
|
||||
<field name="keyword">form_print</field>
|
||||
<field name="model">lims.sample,-1</field>
|
||||
<field name="action" ref="wiz_report_sample_labels_printer"/>
|
||||
</record>
|
||||
|
||||
<!-- Control Charts -->
|
||||
|
||||
<record model="ir.action.wizard" id="wiz_control_chart_print">
|
||||
<field name="name">Control Chart</field>
|
||||
<field name="wiz_name">lims.control_chart.print</field>
|
||||
<field name="model">lims.control.tendency</field>
|
||||
</record>
|
||||
<record model="ir.action.report" id="report_control_chart">
|
||||
<field name="name">Control Chart</field>
|
||||
<field name="model">lims.control.tendency</field>
|
||||
<field name="report_name">lims.control_chart.report</field>
|
||||
<field name="report">lims/report/control_chart_report.odt</field>
|
||||
</record>
|
||||
<record model="ir.action.keyword" id="report_control_chart_keyword">
|
||||
<field name="keyword">form_print</field>
|
||||
<field name="model">lims.control.tendency,-1</field>
|
||||
<field name="action" ref="wiz_control_chart_print"/>
|
||||
</record>
|
||||
|
||||
<!-- Results Report -->
|
||||
|
||||
<record model="ir.action.report" id="report_results_report">
|
||||
<field name="name">Results Report</field>
|
||||
<field name="model">lims.results_report.version.detail</field>
|
||||
<field name="report_name">lims.result_report</field>
|
||||
<field name="report">lims/report/results_report.odt</field>
|
||||
</record>
|
||||
<record model="ir.action.keyword" id="report_results_report_keyword">
|
||||
<field name="keyword">form_print</field>
|
||||
<field name="model">lims.results_report.version.detail,-1</field>
|
||||
<field name="action" ref="report_results_report"/>
|
||||
</record>
|
||||
|
||||
<!-- Transcription Results Report -->
|
||||
|
||||
<record model="ir.action.report" id="report_results_report_transcription">
|
||||
<field name="name">Transcription Results Report</field>
|
||||
<field name="model">lims.results_report.version.detail</field>
|
||||
<field name="report_name">lims.result_report.transcription</field>
|
||||
<field name="report">lims/report/results_report.odt</field>
|
||||
</record>
|
||||
<record model="ir.action.keyword" id="report_results_report_transcription_keyword">
|
||||
<field name="keyword">form_print</field>
|
||||
<field name="model">lims.results_report.version.detail,-1</field>
|
||||
<field name="action" ref="report_results_report_transcription"/>
|
||||
</record>
|
||||
|
||||
<!-- Global Results Report -->
|
||||
|
||||
<record model="ir.action.report" id="report_global_results_report">
|
||||
<field name="name">Global Results Report</field>
|
||||
<field name="model"></field>
|
||||
<field name="report_name">lims.global_result_report</field>
|
||||
<field name="report">lims/report/global_results_report.odt</field>
|
||||
</record>
|
||||
|
||||
<!-- Countersamples Storage Report -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_countersample_storage_print_start_view_form">
|
||||
<field name="model">lims.countersample.storage.print.start</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">countersample_storage_print_start_form</field>
|
||||
</record>
|
||||
<record model="ir.action.wizard" id="wiz_lims_countersample_storage_print">
|
||||
<field name="name">Countersamples Storage Report</field>
|
||||
<field name="wiz_name">lims.countersample.storage.print</field>
|
||||
</record>
|
||||
<record model="ir.action.report" id="report_countersample_storage">
|
||||
<field name="name">Countersamples Storage Report</field>
|
||||
<!-- <field name="model">lims.fraction</field> -->
|
||||
<field name="report_name">lims.countersample.storage.report</field>
|
||||
<field name="report">lims/report/countersample_storage_report.odt</field>
|
||||
</record>
|
||||
<record model="ir.action.keyword" id="lims_countersample_storage_print_keyword">
|
||||
<field name="keyword">form_print</field>
|
||||
<field name="model">lims.fraction,-1</field>
|
||||
<field name="action" ref="wiz_lims_countersample_storage_print"/>
|
||||
</record>
|
||||
|
||||
<!-- Countersamples Discharge Report -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_countersample_discharge_print_start_view_form">
|
||||
<field name="model">lims.countersample.discharge.print.start</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">countersample_discharge_print_start_form</field>
|
||||
</record>
|
||||
<record model="ir.action.wizard" id="wiz_lims_countersample_discharge_print">
|
||||
<field name="name">Countersamples Discharge Report</field>
|
||||
<field name="wiz_name">lims.countersample.discharge.print</field>
|
||||
</record>
|
||||
<record model="ir.action.report" id="report_countersample_discharge">
|
||||
<field name="name">Countersamples Discharge Report</field>
|
||||
<!-- <field name="model">lims.fraction</field> -->
|
||||
<field name="report_name">lims.countersample.discharge.report</field>
|
||||
<field name="report">lims/report/countersample_discharge_report.odt</field>
|
||||
</record>
|
||||
<record model="ir.action.keyword" id="lims_countersample_discharge_print_keyword">
|
||||
<field name="keyword">form_print</field>
|
||||
<field name="model">lims.fraction,-1</field>
|
||||
<field name="action" ref="wiz_lims_countersample_discharge_print"/>
|
||||
</record>
|
||||
|
||||
<!-- Analysis Pending of Inform -->
|
||||
|
||||
<record model="ir.ui.view" id="print_analysis_pending_inform_start_view_form">
|
||||
<field name="model">lims.print_analysis_pending_inform.start</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">analysis_pending_inform_start_form</field>
|
||||
</record>
|
||||
<record model="ir.action.wizard" id="wiz_print_analysis_pending_inform">
|
||||
<field name="name">Pending analysis Unchecked</field>
|
||||
<field name="wiz_name">lims.print_analysis_pending_inform</field>
|
||||
</record>
|
||||
<record model="ir.action.report" id="report_analysis_pending_inform">
|
||||
<field name="name">Pending analysis Unchecked</field>
|
||||
<field name="report_name">lims.analysis_pending_inform</field>
|
||||
<field name="report">lims/report/analysis_pending_inform.ods</field>
|
||||
</record>
|
||||
|
||||
|
||||
<!-- Analysis Checked pending of inform -->
|
||||
|
||||
<record model="ir.ui.view" id="print_analysis_checked_pending_inform_start_view_form">
|
||||
<field name="model">lims.print_analysis_checked_pending_inform.start</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">print_analysis_checked_pending_inform_start_view_form</field>
|
||||
</record>
|
||||
<record model="ir.action.wizard" id="wiz_print_analysis_checked_pending_inform">
|
||||
<field name="name">Analysis checked pending of inform</field>
|
||||
<field name="wiz_name">lims.print_analysis_checked_pending_inform</field>
|
||||
</record>
|
||||
<record model="ir.action.report" id="report_analysis_checked_pending_inform">
|
||||
<field name="name">Analysis checked pending of inform</field>
|
||||
<field name="report_name">lims.analysis_checked_pending_inform</field>
|
||||
<field name="report">lims/report/analysis_checked_pending_inform.ods</field>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</tryton>
|
1619
lims/lims_view.xml
|
@ -346,6 +346,12 @@ msgctxt "error:lims.results_report.version.detail:"
|
|||
msgid "Absence"
|
||||
msgstr "Ausencia"
|
||||
|
||||
msgctxt "error:lims.results_report.version.detail:"
|
||||
msgid "Elements results are reported without recovery correction."
|
||||
msgstr ""
|
||||
"Los resultados de metales se informan sin la corrección en función de la "
|
||||
"recuperación."
|
||||
|
||||
msgctxt "error:lims.results_report.version.detail:"
|
||||
msgid "Expressed at %s"
|
||||
msgstr "Expresado a %s"
|
||||
|
@ -362,13 +368,28 @@ msgctxt "error:lims.results_report.version.detail:"
|
|||
msgid "Expressed at dry matter"
|
||||
msgstr "Expresado a base seca"
|
||||
|
||||
msgctxt "error:lims.results_report.version.detail:"
|
||||
msgid ""
|
||||
"LABORATORY N° 0112. The laboratory undertakes to submit results in this "
|
||||
"protocol only in specific actions for which it is AUTHORIZED by the NATIONAL"
|
||||
" LABORATORY NETWORK and for the sole purpose of being submitted to SENASA."
|
||||
msgstr ""
|
||||
"LABORATORIO N° 0112. El laboratorio se compromete a remitir resultados en el"
|
||||
" presente únicamente en acciones especificas para las cuales se encuentra "
|
||||
"AUTORIZADO por la RED NACIONAL DE LABORATORIOS y al solo efecto de ser "
|
||||
"presentado ante el SENASA."
|
||||
|
||||
msgctxt "error:lims.results_report.version.detail:"
|
||||
msgid "LoD= Limit of Detection."
|
||||
msgstr "LD= Límite de Detección."
|
||||
|
||||
msgctxt "error:lims.results_report.version.detail:"
|
||||
msgid "LoQ= Limit of Quantitation."
|
||||
msgstr "LC= Límite de Cuantificación."
|
||||
msgid ""
|
||||
"LoQ= Limit of Quantitation. Result <LoQ indicates that the detected value is"
|
||||
" between LoD (Limit of Detection) and LoQ (Limit of Quantitation)."
|
||||
msgstr ""
|
||||
"LC= Límite de Cuantificación. Resultado <LC indica que el valor detectado se"
|
||||
" encuentra entre el límite de detección y el límite de cuantificación."
|
||||
|
||||
msgctxt "error:lims.results_report.version.detail:"
|
||||
msgid "NOT SPECIFIED BY THE CLIENT"
|
||||
|
@ -410,13 +431,6 @@ msgctxt "error:lims.results_report.version.detail:"
|
|||
msgid "The report has not lines to print"
|
||||
msgstr "El informe no tiene líneas para imprimir"
|
||||
|
||||
msgctxt "error:lims.results_report.version.detail:"
|
||||
msgid ""
|
||||
"Elements results are reported without recovery correction."
|
||||
msgstr ""
|
||||
"Los resultados de metales se informan sin la corrección en función de la "
|
||||
"recuperación."
|
||||
|
||||
msgctxt "error:lims.results_report.version.detail:"
|
||||
msgid "This report is annulled"
|
||||
msgstr "Este informe está anulado"
|
||||
|
@ -1526,6 +1540,10 @@ msgctxt "field:lims.control.tendency.detail,fraction:"
|
|||
msgid "Fraction"
|
||||
msgstr "Fracción"
|
||||
|
||||
msgctxt "field:lims.control.tendency.detail,icon:"
|
||||
msgid "Icon"
|
||||
msgstr "Icono"
|
||||
|
||||
msgctxt "field:lims.control.tendency.detail,id:"
|
||||
msgid "ID"
|
||||
msgstr "ID"
|
||||
|
@ -1841,8 +1859,6 @@ msgstr "Observaciones"
|
|||
msgctxt "field:lims.create_sample.start,date:"
|
||||
msgid "Date"
|
||||
msgstr "Fecha de ingreso"
|
||||
##msgstr "Fecha de recepción"
|
||||
|
||||
|
||||
msgctxt "field:lims.create_sample.start,fraction_state:"
|
||||
msgid "Package state"
|
||||
|
@ -2040,6 +2056,10 @@ msgctxt "field:lims.entry,ack_report_cache:"
|
|||
msgid "Acknowledgment report cache"
|
||||
msgstr "Cache acuse de recibo"
|
||||
|
||||
msgctxt "field:lims.entry,ack_report_cache_id:"
|
||||
msgid "Acknowledgment report cache ID"
|
||||
msgstr "ID Cache acuse de recibo"
|
||||
|
||||
msgctxt "field:lims.entry,ack_report_format:"
|
||||
msgid "Acknowledgment report format"
|
||||
msgstr "Formato acuse de recibo"
|
||||
|
@ -2079,8 +2099,6 @@ msgstr "Fecha"
|
|||
msgctxt "field:lims.entry,date:"
|
||||
msgid "Date"
|
||||
msgstr "Fecha de ingreso"
|
||||
##msgstr "Fecha de recepción"
|
||||
|
||||
|
||||
msgctxt "field:lims.entry,email_report:"
|
||||
msgid "Email report"
|
||||
|
@ -2090,6 +2108,10 @@ msgctxt "field:lims.entry,english_report:"
|
|||
msgid "English report"
|
||||
msgstr "Informe en inglés"
|
||||
|
||||
msgctxt "field:lims.entry,icon:"
|
||||
msgid "Icon"
|
||||
msgstr "Icono"
|
||||
|
||||
msgctxt "field:lims.entry,id:"
|
||||
msgid "ID"
|
||||
msgstr "ID"
|
||||
|
@ -2329,8 +2351,6 @@ msgstr "Usuario modificación"
|
|||
msgctxt "field:lims.entry.duplicate_sample.start,date:"
|
||||
msgid "Date"
|
||||
msgstr "Fecha de ingreso"
|
||||
##msgstr "Fecha de recepción"
|
||||
|
||||
|
||||
msgctxt "field:lims.entry.duplicate_sample.start,entry:"
|
||||
msgid "Entry"
|
||||
|
@ -2604,6 +2624,10 @@ msgctxt "field:lims.fraction,has_results_report:"
|
|||
msgid "Results Report"
|
||||
msgstr "Informe de resultados"
|
||||
|
||||
msgctxt "field:lims.fraction,icon:"
|
||||
msgid "Icon"
|
||||
msgstr "Icono"
|
||||
|
||||
msgctxt "field:lims.fraction,id:"
|
||||
msgid "ID"
|
||||
msgstr "ID"
|
||||
|
@ -3385,6 +3409,10 @@ msgctxt "field:lims.lab.workyear,sample_sequence:"
|
|||
msgid "Sample Sequence"
|
||||
msgstr "Secuencia de muestras"
|
||||
|
||||
msgctxt "field:lims.lab.workyear,sequences:"
|
||||
msgid "Sequences"
|
||||
msgstr "Secuencias"
|
||||
|
||||
msgctxt "field:lims.lab.workyear,service_sequence:"
|
||||
msgid "Service Sequence"
|
||||
msgstr "Secuencia de servicios"
|
||||
|
@ -3401,6 +3429,54 @@ msgctxt "field:lims.lab.workyear,write_uid:"
|
|||
msgid "Write User"
|
||||
msgstr "Usuario modificación"
|
||||
|
||||
msgctxt "field:lims.lab.workyear.sequence,company:"
|
||||
msgid "Company"
|
||||
msgstr "Empresa"
|
||||
|
||||
msgctxt "field:lims.lab.workyear.sequence,create_date:"
|
||||
msgid "Create Date"
|
||||
msgstr "Fecha creación"
|
||||
|
||||
msgctxt "field:lims.lab.workyear.sequence,create_uid:"
|
||||
msgid "Create User"
|
||||
msgstr "Usuario creación"
|
||||
|
||||
msgctxt "field:lims.lab.workyear.sequence,entry_sequence:"
|
||||
msgid "Entry Sequence"
|
||||
msgstr "Secuencia de partidas"
|
||||
|
||||
msgctxt "field:lims.lab.workyear.sequence,id:"
|
||||
msgid "ID"
|
||||
msgstr "ID"
|
||||
|
||||
msgctxt "field:lims.lab.workyear.sequence,rec_name:"
|
||||
msgid "Name"
|
||||
msgstr "Nombre"
|
||||
|
||||
msgctxt "field:lims.lab.workyear.sequence,results_report_sequence:"
|
||||
msgid "Results Report Sequence"
|
||||
msgstr "Secuencia de informes de resultados"
|
||||
|
||||
msgctxt "field:lims.lab.workyear.sequence,sample_sequence:"
|
||||
msgid "Sample Sequence"
|
||||
msgstr "Secuencia de muestras"
|
||||
|
||||
msgctxt "field:lims.lab.workyear.sequence,service_sequence:"
|
||||
msgid "Service Sequence"
|
||||
msgstr "Secuencia de servicios"
|
||||
|
||||
msgctxt "field:lims.lab.workyear.sequence,workyear:"
|
||||
msgid "Work Year"
|
||||
msgstr "Año laboral"
|
||||
|
||||
msgctxt "field:lims.lab.workyear.sequence,write_date:"
|
||||
msgid "Write Date"
|
||||
msgstr "Fecha modificación"
|
||||
|
||||
msgctxt "field:lims.lab.workyear.sequence,write_uid:"
|
||||
msgid "Write User"
|
||||
msgstr "Usuario modificación"
|
||||
|
||||
msgctxt "field:lims.laboratory,code:"
|
||||
msgid "Code"
|
||||
msgstr "Código"
|
||||
|
@ -3649,6 +3725,10 @@ msgctxt "field:lims.notebook,fraction_type:"
|
|||
msgid "Fraction type"
|
||||
msgstr "Tipo de fracción"
|
||||
|
||||
msgctxt "field:lims.notebook,icon:"
|
||||
msgid "Icon"
|
||||
msgstr "Icono"
|
||||
|
||||
msgctxt "field:lims.notebook,id:"
|
||||
msgid "ID"
|
||||
msgstr "ID"
|
||||
|
@ -4040,8 +4120,6 @@ msgstr "Fecha"
|
|||
msgctxt "field:lims.notebook.line,date:"
|
||||
msgid "Date"
|
||||
msgstr "Fecha de ingreso"
|
||||
##msgstr "Fecha de recepción "
|
||||
|
||||
|
||||
msgctxt "field:lims.notebook.line,decimals:"
|
||||
msgid "Decimals"
|
||||
|
@ -4091,6 +4169,10 @@ msgctxt "field:lims.notebook.line,fraction_type:"
|
|||
msgid "Fraction type"
|
||||
msgstr "Tipo de fracción"
|
||||
|
||||
msgctxt "field:lims.notebook.line,icon:"
|
||||
msgid "Icon"
|
||||
msgstr "Icono"
|
||||
|
||||
msgctxt "field:lims.notebook.line,id:"
|
||||
msgid "ID"
|
||||
msgstr "ID"
|
||||
|
@ -4147,6 +4229,10 @@ msgctxt "field:lims.notebook.line,party:"
|
|||
msgid "Party"
|
||||
msgstr "Entidad"
|
||||
|
||||
msgctxt "field:lims.notebook.line,planification:"
|
||||
msgid "Planification"
|
||||
msgstr "Planificación"
|
||||
|
||||
msgctxt "field:lims.notebook.line,priority:"
|
||||
msgid "Priority"
|
||||
msgstr "Prioridad"
|
||||
|
@ -4342,8 +4428,6 @@ msgstr "Usuario creación"
|
|||
msgctxt "field:lims.notebook.line.all_fields,date:"
|
||||
msgid "Date"
|
||||
msgstr "Fecha de ingreso"
|
||||
##msgstr "Fecha de recepción"
|
||||
|
||||
|
||||
msgctxt "field:lims.notebook.line.all_fields,decimals:"
|
||||
msgid "Decimals"
|
||||
|
@ -5254,6 +5338,30 @@ msgctxt "field:lims.packaging.type,write_uid:"
|
|||
msgid "Write User"
|
||||
msgstr "Usuario modificación"
|
||||
|
||||
msgctxt "field:lims.planification,create_date:"
|
||||
msgid "Create Date"
|
||||
msgstr "Fecha creación"
|
||||
|
||||
msgctxt "field:lims.planification,create_uid:"
|
||||
msgid "Create User"
|
||||
msgstr "Usuario creación"
|
||||
|
||||
msgctxt "field:lims.planification,id:"
|
||||
msgid "ID"
|
||||
msgstr "ID"
|
||||
|
||||
msgctxt "field:lims.planification,rec_name:"
|
||||
msgid "Name"
|
||||
msgstr "Nombre"
|
||||
|
||||
msgctxt "field:lims.planification,write_date:"
|
||||
msgid "Write Date"
|
||||
msgstr "Fecha modificación"
|
||||
|
||||
msgctxt "field:lims.planification,write_uid:"
|
||||
msgid "Write User"
|
||||
msgstr "Usuario modificación"
|
||||
|
||||
msgctxt "field:lims.print_analysis_pending_inform.start,date_from:"
|
||||
msgid "Date from"
|
||||
msgstr "Fecha desde"
|
||||
|
@ -5562,6 +5670,14 @@ msgctxt "field:lims.results_report,report_cache_eng:"
|
|||
msgid "Report cache"
|
||||
msgstr "Cache informe"
|
||||
|
||||
msgctxt "field:lims.results_report,report_cache_eng_id:"
|
||||
msgid "Report cache id"
|
||||
msgstr "ID Cache informe"
|
||||
|
||||
msgctxt "field:lims.results_report,report_cache_id:"
|
||||
msgid "Report cache id"
|
||||
msgstr "ID Cache informe"
|
||||
|
||||
msgctxt "field:lims.results_report,report_format:"
|
||||
msgid "Report format"
|
||||
msgstr "Formato informe"
|
||||
|
@ -5682,6 +5798,10 @@ msgctxt "field:lims.results_report.version.detail,fraction_comments:"
|
|||
msgid "Fraction comments"
|
||||
msgstr "Observaciones de la fracción"
|
||||
|
||||
msgctxt "field:lims.results_report.version.detail,icon:"
|
||||
msgid "Icon"
|
||||
msgstr "Icono"
|
||||
|
||||
msgctxt "field:lims.results_report.version.detail,id:"
|
||||
msgid "ID"
|
||||
msgstr "ID"
|
||||
|
@ -5714,6 +5834,14 @@ msgctxt "field:lims.results_report.version.detail,report_cache_eng:"
|
|||
msgid "Report cache"
|
||||
msgstr "Cache informe"
|
||||
|
||||
msgctxt "field:lims.results_report.version.detail,report_cache_eng_id:"
|
||||
msgid "Report cache id"
|
||||
msgstr "ID Cache informe"
|
||||
|
||||
msgctxt "field:lims.results_report.version.detail,report_cache_id:"
|
||||
msgid "Report cache id"
|
||||
msgstr "ID Cache informe"
|
||||
|
||||
msgctxt "field:lims.results_report.version.detail,report_cache_odt:"
|
||||
msgid "Transcription Report cache"
|
||||
msgstr "Cache transcripción informe"
|
||||
|
@ -5722,6 +5850,14 @@ msgctxt "field:lims.results_report.version.detail,report_cache_odt_eng:"
|
|||
msgid "Transcription Report cache"
|
||||
msgstr "Cache transcripción informe"
|
||||
|
||||
msgctxt "field:lims.results_report.version.detail,report_cache_odt_eng_id:"
|
||||
msgid "Transcription Report cache id"
|
||||
msgstr "ID Cache transcripción informe"
|
||||
|
||||
msgctxt "field:lims.results_report.version.detail,report_cache_odt_id:"
|
||||
msgid "Transcription Report cache id"
|
||||
msgstr "ID Cache transcripción informe"
|
||||
|
||||
msgctxt "field:lims.results_report.version.detail,report_format:"
|
||||
msgid "Report format"
|
||||
msgstr "Formato informe"
|
||||
|
@ -5794,6 +5930,10 @@ msgctxt "field:lims.results_report.version.detail,write_uid:"
|
|||
msgid "Write User"
|
||||
msgstr "Usuario modificación"
|
||||
|
||||
msgctxt "field:lims.results_report.version.detail,z_senasa_protocol_report:"
|
||||
msgid "SENASA Protocol report"
|
||||
msgstr "Informe con protocolo SENASA"
|
||||
|
||||
msgctxt "field:lims.results_report.version.detail.line,analysis:"
|
||||
msgid "Analysis"
|
||||
msgstr "Análisis"
|
||||
|
@ -5851,6 +5991,10 @@ msgctxt "field:lims.results_report.version.detail.line,literal_result:"
|
|||
msgid "Literal result"
|
||||
msgstr "Resultado textual"
|
||||
|
||||
msgctxt "field:lims.results_report.version.detail.line,matrix:"
|
||||
msgid "Matrix"
|
||||
msgstr "Matriz"
|
||||
|
||||
msgctxt "field:lims.results_report.version.detail.line,method:"
|
||||
msgid "Method"
|
||||
msgstr "Método"
|
||||
|
@ -5871,6 +6015,10 @@ msgctxt "field:lims.results_report.version.detail.line,priority:"
|
|||
msgid "Priority"
|
||||
msgstr "Prioridad"
|
||||
|
||||
msgctxt "field:lims.results_report.version.detail.line,product_type:"
|
||||
msgid "Product type"
|
||||
msgstr "Tipo de producto"
|
||||
|
||||
msgctxt "field:lims.results_report.version.detail.line,rec_name:"
|
||||
msgid "Name"
|
||||
msgstr "Nombre"
|
||||
|
@ -5950,8 +6098,6 @@ msgstr "Fecha"
|
|||
msgctxt "field:lims.sample,date:"
|
||||
msgid "Date"
|
||||
msgstr "Fecha de ingreso"
|
||||
##msgstr "Fecha de recepción"
|
||||
|
||||
|
||||
msgctxt "field:lims.sample,entry:"
|
||||
msgid "Entry"
|
||||
|
@ -5969,6 +6115,10 @@ msgctxt "field:lims.sample,has_results_report:"
|
|||
msgid "Results Report"
|
||||
msgstr "Informe de resultados"
|
||||
|
||||
msgctxt "field:lims.sample,icon:"
|
||||
msgid "Icon"
|
||||
msgstr "Icono"
|
||||
|
||||
msgctxt "field:lims.sample,id:"
|
||||
msgid "ID"
|
||||
msgstr "ID"
|
||||
|
@ -6080,8 +6230,6 @@ msgstr "Zona"
|
|||
msgctxt "field:lims.sample.duplicate.start,date:"
|
||||
msgid "Date"
|
||||
msgstr "Fecha de ingreso"
|
||||
##msgstr "Fecha de recepción"
|
||||
|
||||
|
||||
msgctxt "field:lims.sample.duplicate.start,id:"
|
||||
msgid "ID"
|
||||
|
@ -6224,6 +6372,10 @@ msgctxt "field:lims.service,has_results_report:"
|
|||
msgid "Results Report"
|
||||
msgstr "Informe de resultados"
|
||||
|
||||
msgctxt "field:lims.service,icon:"
|
||||
msgid "Icon"
|
||||
msgstr "Icono"
|
||||
|
||||
msgctxt "field:lims.service,id:"
|
||||
msgid "ID"
|
||||
msgstr "ID"
|
||||
|
@ -7073,6 +7225,10 @@ msgctxt "field:party.party,single_sending_report:"
|
|||
msgid "Single sending of report"
|
||||
msgstr "Envío único de Informe"
|
||||
|
||||
msgctxt "field:party.party,z_senasa_protocol_report:"
|
||||
msgid "SENASA Protocol report"
|
||||
msgstr "Informe con protocolo SENASA"
|
||||
|
||||
msgctxt "field:product.uom,maximum_concentration:"
|
||||
msgid "Maximum concentration"
|
||||
msgstr "Concentración máxima"
|
||||
|
@ -8296,6 +8452,10 @@ msgctxt "model:lims.lab.workyear,name:"
|
|||
msgid "Work Year"
|
||||
msgstr "Año laboral"
|
||||
|
||||
msgctxt "model:lims.lab.workyear.sequence,name:"
|
||||
msgid "Work Year Sequence"
|
||||
msgstr "Secuencia de años laborales"
|
||||
|
||||
msgctxt "model:lims.laboratory,name:"
|
||||
msgid "Laboratory"
|
||||
msgstr "Laboratorio"
|
||||
|
@ -8496,6 +8656,10 @@ msgctxt "model:lims.packaging.type,name:"
|
|||
msgid "Packaging Type"
|
||||
msgstr "Tipo de envase"
|
||||
|
||||
msgctxt "model:lims.planification,name:"
|
||||
msgid "Planification"
|
||||
msgstr "Planificación"
|
||||
|
||||
msgctxt "model:lims.print_analysis_pending_inform.start,name:"
|
||||
msgid "Analysis Pending of Inform"
|
||||
msgstr "Análisis pendientes sin tildar"
|
||||
|
@ -9061,8 +9225,8 @@ msgid "/"
|
|||
msgstr "/"
|
||||
|
||||
msgctxt "report:lims.countersample.discharge.report:"
|
||||
msgid "Code"
|
||||
msgstr "Código"
|
||||
msgid "CIATI Code"
|
||||
msgstr "Código CIATI"
|
||||
|
||||
msgctxt "report:lims.countersample.discharge.report:"
|
||||
msgid "Comments"
|
||||
|
@ -9126,8 +9290,8 @@ msgid "/"
|
|||
msgstr "/"
|
||||
|
||||
msgctxt "report:lims.countersample.storage.report:"
|
||||
msgid "Code"
|
||||
msgstr "Código"
|
||||
msgid "CIATI Code"
|
||||
msgstr "Código CIATI"
|
||||
|
||||
msgctxt "report:lims.countersample.storage.report:"
|
||||
msgid "Comments"
|
||||
|
@ -9314,13 +9478,21 @@ msgctxt "report:lims.result_report.transcription:"
|
|||
msgid "Analysis"
|
||||
msgstr "Análisis"
|
||||
|
||||
msgctxt "report:lims.result_report.transcription:"
|
||||
msgid ""
|
||||
"Av. Mitre y 20 de Junio (8336) Villa Regina - Río Negro - Argentina - Tel: "
|
||||
"54-298-4462810 (Rotativas) Fax: 54-298-4461101 e-mail: info@ciati.com.ar -"
|
||||
msgstr ""
|
||||
"Av. Mitre y 20 de Junio (8336) Villa Regina - Río Negro - Argentina - Tel: "
|
||||
"54-298-4462810 (Rotativas) Fax: 54-298-4461101 e-mail: info@ciati.com.ar - "
|
||||
|
||||
msgctxt "report:lims.result_report.transcription:"
|
||||
msgid "BEGINNING OF THE ANALYSIS:"
|
||||
msgstr "FECHA INICIO DE ANÁLISIS:"
|
||||
|
||||
msgctxt "report:lims.result_report.transcription:"
|
||||
msgid "CODE OF THE SAMPLE:"
|
||||
msgstr "CÓDIGO DE LA MUESTRA:"
|
||||
msgid "CIATI CODE OF THE SAMPLE:"
|
||||
msgstr "CÓDIGO CIATI DE LA MUESTRA:"
|
||||
|
||||
msgctxt "report:lims.result_report.transcription:"
|
||||
msgid "CONFIRMATION SAMPLE RECEPTION:"
|
||||
|
@ -9330,6 +9502,10 @@ msgctxt "report:lims.result_report.transcription:"
|
|||
msgid "CONTAINER:"
|
||||
msgstr "ENVASE:"
|
||||
|
||||
msgctxt "report:lims.result_report.transcription:"
|
||||
msgid "CUSTOMER DESCRIPTION:"
|
||||
msgstr "DESCRIPCIÓN DEL CLIENTE:"
|
||||
|
||||
msgctxt "report:lims.result_report.transcription:"
|
||||
msgid "DAYS AFTER TREATMENT (DAT):"
|
||||
msgstr "DÍAS DESPUÉS DE APLICADO:"
|
||||
|
@ -9386,10 +9562,6 @@ msgctxt "report:lims.result_report.transcription:"
|
|||
msgid "PRODUCER COMPANY:"
|
||||
msgstr "EMPRESA PRODUCTORA:"
|
||||
|
||||
msgctxt "report:lims.result_report.transcription:"
|
||||
msgid "CUSTOMER DESCRIPTION:"
|
||||
msgstr "DESCRIPCIÓN DEL CLIENTE:"
|
||||
|
||||
msgctxt "report:lims.result_report.transcription:"
|
||||
msgid "Page:"
|
||||
msgstr "Página:"
|
||||
|
@ -9449,10 +9621,11 @@ msgstr "TRATAMIENTO:"
|
|||
msgctxt "report:lims.result_report.transcription:"
|
||||
msgid ""
|
||||
"The results only refer to the analyzed samples. This report must not be "
|
||||
"partially reproduced without the written approval of "
|
||||
"partially reproduced without the written approval of CIATI AC."
|
||||
msgstr ""
|
||||
"Los resultados se refieren exclusivamente a las muestras analizadas. El "
|
||||
"informe no debe reproducirse parcialmente sin la aprobación escrita de "
|
||||
"informe no debe reproducirse parcialmente sin la aprobación escrita de CIATI"
|
||||
" AC."
|
||||
|
||||
msgctxt "report:lims.result_report.transcription:"
|
||||
msgid "Unit"
|
||||
|
@ -9466,6 +9639,10 @@ msgctxt "report:lims.result_report.transcription:"
|
|||
msgid "ZONE:"
|
||||
msgstr "ZONA:"
|
||||
|
||||
msgctxt "report:lims.result_report.transcription:"
|
||||
msgid "www.ciati.com.ar"
|
||||
msgstr "www.ciati.com.ar"
|
||||
|
||||
msgctxt "report:lims.result_report.transcription:"
|
||||
msgid "· Page:"
|
||||
msgstr "· Página:"
|
||||
|
@ -9506,13 +9683,21 @@ msgctxt "report:lims.result_report:"
|
|||
msgid "Analysis"
|
||||
msgstr "Análisis"
|
||||
|
||||
msgctxt "report:lims.result_report:"
|
||||
msgid ""
|
||||
"Av. Mitre y 20 de Junio (8336) Villa Regina - Río Negro - Argentina - Tel: "
|
||||
"54-298-4462810 (Rotativas) Fax: 54-298-4461101 e-mail: info@ciati.com.ar -"
|
||||
msgstr ""
|
||||
"Av. Mitre y 20 de Junio (8336) Villa Regina - Río Negro - Argentina - Tel: "
|
||||
"54-298-4462810 (Rotativas) Fax: 54-298-4461101 e-mail: info@ciati.com.ar - "
|
||||
|
||||
msgctxt "report:lims.result_report:"
|
||||
msgid "BEGINNING OF THE ANALYSIS:"
|
||||
msgstr "FECHA INICIO DE ANÁLISIS:"
|
||||
|
||||
msgctxt "report:lims.result_report:"
|
||||
msgid "CODE OF THE SAMPLE:"
|
||||
msgstr "CÓDIGO DE LA MUESTRA:"
|
||||
msgid "CIATI CODE OF THE SAMPLE:"
|
||||
msgstr "CÓDIGO CIATI DE LA MUESTRA:"
|
||||
|
||||
msgctxt "report:lims.result_report:"
|
||||
msgid "CONFIRMATION SAMPLE RECEPTION:"
|
||||
|
@ -9522,6 +9707,10 @@ msgctxt "report:lims.result_report:"
|
|||
msgid "CONTAINER:"
|
||||
msgstr "ENVASE:"
|
||||
|
||||
msgctxt "report:lims.result_report:"
|
||||
msgid "CUSTOMER DESCRIPTION:"
|
||||
msgstr "DESCRIPCIÓN DEL CLIENTE:"
|
||||
|
||||
msgctxt "report:lims.result_report:"
|
||||
msgid "DAYS AFTER TREATMENT (DAT):"
|
||||
msgstr "DÍAS DESPUÉS DE APLICADO:"
|
||||
|
@ -9578,10 +9767,6 @@ msgctxt "report:lims.result_report:"
|
|||
msgid "PRODUCER COMPANY:"
|
||||
msgstr "EMPRESA PRODUCTORA:"
|
||||
|
||||
msgctxt "report:lims.result_report:"
|
||||
msgid "CUSTOMER DESCRIPTION:"
|
||||
msgstr "DESCRIPCIÓN DEL CLIENTE:"
|
||||
|
||||
msgctxt "report:lims.result_report:"
|
||||
msgid "Page:"
|
||||
msgstr "Página:"
|
||||
|
@ -9641,10 +9826,11 @@ msgstr "TRATAMIENTO:"
|
|||
msgctxt "report:lims.result_report:"
|
||||
msgid ""
|
||||
"The results only refer to the analyzed samples. This report must not be "
|
||||
"partially reproduced without the written approval of "
|
||||
"partially reproduced without the written approval of CIATI AC."
|
||||
msgstr ""
|
||||
"Los resultados se refieren exclusivamente a las muestras analizadas. El "
|
||||
"informe no debe reproducirse parcialmente sin la aprobación escrita de "
|
||||
"informe no debe reproducirse parcialmente sin la aprobación escrita de CIATI"
|
||||
" AC."
|
||||
|
||||
msgctxt "report:lims.result_report:"
|
||||
msgid "Unit"
|
||||
|
@ -9658,6 +9844,10 @@ msgctxt "report:lims.result_report:"
|
|||
msgid "ZONE:"
|
||||
msgstr "ZONA:"
|
||||
|
||||
msgctxt "report:lims.result_report:"
|
||||
msgid "www.ciati.com.ar"
|
||||
msgstr "www.ciati.com.ar"
|
||||
|
||||
msgctxt "report:lims.result_report:"
|
||||
msgid "· Page:"
|
||||
msgstr "· Página:"
|
||||
|
@ -12384,7 +12574,10 @@ msgstr ""
|
|||
"El resultado convertido o el modificador del resultado convertido es "
|
||||
"inválido"
|
||||
|
||||
##
|
||||
msgctxt "selection:lims.project,type:"
|
||||
msgid "Water sampling"
|
||||
msgstr "Muestreo"
|
||||
|
||||
msgctxt "field:lims.laboratory,headquarters:"
|
||||
msgid "Headquarters"
|
||||
msgstr "Sede"
|
||||
|
|
|
@ -0,0 +1,822 @@
|
|||
<?xml version="1.0"?>
|
||||
<tryton>
|
||||
<data>
|
||||
|
||||
<record model="ir.ui.icon" id="notebook_icon">
|
||||
<field name="name">lims-notebook</field>
|
||||
<field name="path">icons/notebook.svg</field>
|
||||
</record>
|
||||
<record model="ir.ui.icon" id="notebook_line_all_menu_icon">
|
||||
<field name="name">lims-notebook_line_all_menu</field>
|
||||
<field name="path">icons/notebook_line_all_menu.svg</field>
|
||||
</record>
|
||||
<record model="ir.ui.icon" id="laboratory_results_icon">
|
||||
<field name="name">lims-laboratory_results</field>
|
||||
<field name="path">icons/laboratory_results.svg</field>
|
||||
</record>
|
||||
<record model="ir.ui.icon" id="notebook_load_results_manual_icon">
|
||||
<field name="name">lims-notebook_load_results_manual</field>
|
||||
<field name="path">icons/notebook_load_results_manual.svg</field>
|
||||
</record>
|
||||
<record model="ir.ui.icon" id="notebook_load_results_formula_icon">
|
||||
<field name="name">lims-notebook_load_results_formula</field>
|
||||
<field name="path">icons/notebook_load_results_formula.svg</field>
|
||||
</record>
|
||||
|
||||
<!-- Notebook -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_notebook_view_form">
|
||||
<field name="model">lims.notebook</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">notebook_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_notebook_view_list">
|
||||
<field name="model">lims.notebook</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">notebook_list</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.act_window" id="act_lims_notebook_list">
|
||||
<field name="name">Laboratory Notebooks</field>
|
||||
<field name="res_model">lims.notebook</field>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_lims_notebook_view_list">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="lims_notebook_view_list"/>
|
||||
<field name="act_window" ref="act_lims_notebook_list"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_lims_notebook_view_form">
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="view" ref="lims_notebook_view_form"/>
|
||||
<field name="act_window" ref="act_lims_notebook_list"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.rule.group" id="rule_group_notebook">
|
||||
<field name="model" search="[('model', '=', 'lims.notebook')]"/>
|
||||
<field name="global_p" eval="True"/>
|
||||
</record>
|
||||
<record model="ir.rule" id="rule_notebook">
|
||||
<field name="domain"
|
||||
eval="[If(Bool(Eval('user', {}).get('laboratory', False)), ('lines.laboratory', '=', Eval('user', {}).get('laboratory', None)), If(Bool(Eval('user', {}).get('laboratories', False)), ('lines.laboratory', 'in', Eval('user', {}).get('laboratories', [])), ('id', '!=', 0)))]"
|
||||
pyson="1"/>
|
||||
<field name="rule_group" ref="rule_group_notebook"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.act_window" id="act_lims_notebook_line_related1">
|
||||
<field name="name">Notebook Lines</field>
|
||||
<field name="res_model">lims.notebook.line</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.wizard" id="act_open_notebook_lines">
|
||||
<field name="name">Notebook Lines</field>
|
||||
<field name="wiz_name">lims.open_notebook_lines</field>
|
||||
<field name="model">lims.notebook</field>
|
||||
</record>
|
||||
<record model="ir.action.keyword" id="act_open_notebook_line_keyword1">
|
||||
<field name="keyword">form_relate</field>
|
||||
<field name="model">lims.notebook,-1</field>
|
||||
<field name="action" ref="act_open_notebook_lines"/>
|
||||
</record>
|
||||
|
||||
<!-- Notebook Line -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_notebook_line_view_form">
|
||||
<field name="model">lims.notebook.line</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">notebook_line_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_notebook_line_view_list">
|
||||
<field name="model">lims.notebook.line</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">notebook_line_list</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.act_window" id="act_lims_notebook_line_list">
|
||||
<field name="name">Notebook Lines</field>
|
||||
<field name="res_model">lims.notebook.line</field>
|
||||
<field name="domain"
|
||||
eval="[('notebook', '=', Get(Eval('lims.act_lims_notebook_list', {}), 'id', None))]"
|
||||
pyson="1"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_lims_notebook_line_view_list">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="lims_notebook_line_view_list"/>
|
||||
<field name="act_window" ref="act_lims_notebook_line_list"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.rule.group" id="rule_group_notebook_line">
|
||||
<field name="model" search="[('model', '=', 'lims.notebook.line')]"/>
|
||||
<field name="global_p" eval="True"/>
|
||||
</record>
|
||||
<record model="ir.rule" id="rule_notebook_line">
|
||||
<field name="domain"
|
||||
eval="[If(Bool(Eval('user', {}).get('laboratory', False)), ('laboratory', '=', Eval('user', {}).get('laboratory', None)), If(Bool(Eval('user', {}).get('laboratories', False)), ('laboratory', 'in', Eval('user', {}).get('laboratories', [])), ('id', '!=', 0)))]"
|
||||
pyson="1"/>
|
||||
<field name="rule_group" ref="rule_group_notebook_line"/>
|
||||
</record>
|
||||
|
||||
<!-- Notebook Line Professional -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_notebook_line_professional_view_form">
|
||||
<field name="model">lims.notebook.line.professional</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">notebook_line_professional_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_notebook_line_professional_view_list">
|
||||
<field name="model">lims.notebook.line.professional</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">notebook_line_professional_list</field>
|
||||
</record>
|
||||
|
||||
<!-- Notebook Line All Fields -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_notebook_line_all_fields_view_form">
|
||||
<field name="model">lims.notebook.line.all_fields</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">notebook_line_all_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_notebook_line_all_fields_view_list">
|
||||
<field name="model">lims.notebook.line.all_fields</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">notebook_line_all_list</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.act_window" id="act_lims_notebook_line_all_fields_list">
|
||||
<field name="name">All Notebook Lines</field>
|
||||
<field name="res_model">lims.notebook.line.all_fields</field>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_lims_notebook_line_all_view_list">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="lims_notebook_line_all_fields_view_list"/>
|
||||
<field name="act_window" ref="act_lims_notebook_line_all_fields_list"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_lims_notebook_line_all_view_form">
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="view" ref="lims_notebook_line_all_fields_view_form"/>
|
||||
<field name="act_window" ref="act_lims_notebook_line_all_fields_list"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.rule.group" id="rule_group_notebook_line_all_fields">
|
||||
<field name="model" search="[('model', '=', 'lims.notebook.line.all_fields')]"/>
|
||||
<field name="global_p" eval="True"/>
|
||||
</record>
|
||||
<record model="ir.rule" id="rule_notebook_line_all_fields">
|
||||
<field name="domain"
|
||||
eval="[If(Bool(Eval('user', {}).get('laboratory', False)), ('laboratory', '=', Eval('user', {}).get('laboratory', None)), If(Bool(Eval('user', {}).get('laboratories', False)), ('laboratory', 'in', Eval('user', {}).get('laboratories', [])), ('id', '!=', 0)))]"
|
||||
pyson="1"/>
|
||||
<field name="rule_group" ref="rule_group_notebook_line_all_fields"/>
|
||||
</record>
|
||||
|
||||
<!-- Wizard Initial Concentration Calculation -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_notebook_initial_concentration_calc_view_form">
|
||||
<field name="model">lims.notebook.initial_concentration_calc.start</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">notebook_initial_concentration_calc_form</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.wizard" id="wiz_lims_notebook_initial_concentration_calc">
|
||||
<field name="name">Initial Concentration Calculation</field>
|
||||
<field name="wiz_name">lims.notebook.initial_concentration_calc</field>
|
||||
</record>
|
||||
<record model="ir.action.keyword" id="lims_notebook_initial_concentration_calc_keyword">
|
||||
<field name="keyword">form_action</field>
|
||||
<field name="model">lims.notebook,-1</field>
|
||||
<field name="action" ref="wiz_lims_notebook_initial_concentration_calc"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.wizard" id="wiz_lims_notebook_line_initial_concentration_calc">
|
||||
<field name="name">Initial Concentration Calculation</field>
|
||||
<field name="wiz_name">lims.notebook_line.initial_concentration_calc</field>
|
||||
</record>
|
||||
<record model="ir.action.keyword" id="lims_notebook_line_initial_concentration_calc_keyword">
|
||||
<field name="keyword">form_action</field>
|
||||
<field name="model">lims.notebook.line,-1</field>
|
||||
<field name="action" ref="wiz_lims_notebook_line_initial_concentration_calc"/>
|
||||
</record>
|
||||
|
||||
<!-- Wizard Results Conversion -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_notebook_results_conversion_view_form">
|
||||
<field name="model">lims.notebook.results_conversion.start</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">notebook_results_conversion_form</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.wizard" id="wiz_lims_notebook_results_conversion">
|
||||
<field name="name">Results Conversion</field>
|
||||
<field name="wiz_name">lims.notebook.results_conversion</field>
|
||||
</record>
|
||||
<record model="ir.action.keyword" id="lims_notebook_results_conversion_keyword">
|
||||
<field name="keyword">form_action</field>
|
||||
<field name="model">lims.notebook,-1</field>
|
||||
<field name="action" ref="wiz_lims_notebook_results_conversion"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.wizard" id="wiz_lims_notebook_line_results_conversion">
|
||||
<field name="name">Results Conversion</field>
|
||||
<field name="wiz_name">lims.notebook_line.results_conversion</field>
|
||||
</record>
|
||||
<record model="ir.action.keyword" id="lims_notebook_line_results_conversion_keyword">
|
||||
<field name="keyword">form_action</field>
|
||||
<field name="model">lims.notebook.line,-1</field>
|
||||
<field name="action" ref="wiz_lims_notebook_line_results_conversion"/>
|
||||
</record>
|
||||
|
||||
<!-- Wizard Limits Validation -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_notebook_limits_validation_view_form">
|
||||
<field name="model">lims.notebook.limits_validation.start</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">notebook_limits_validation_form</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.wizard" id="wiz_lims_notebook_limits_validation">
|
||||
<field name="name">Limits Validation</field>
|
||||
<field name="wiz_name">lims.notebook.limits_validation</field>
|
||||
</record>
|
||||
<record model="ir.action.keyword" id="lims_notebook_limits_validation_keyword">
|
||||
<field name="keyword">form_action</field>
|
||||
<field name="model">lims.notebook,-1</field>
|
||||
<field name="action" ref="wiz_lims_notebook_limits_validation"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.wizard" id="wiz_lims_notebook_line_limits_validation">
|
||||
<field name="name">Limits Validation</field>
|
||||
<field name="wiz_name">lims.notebook_line.limits_validation</field>
|
||||
</record>
|
||||
<record model="ir.action.keyword" id="lims_notebook_line_limits_validation_keyword">
|
||||
<field name="keyword">form_action</field>
|
||||
<field name="model">lims.notebook.line,-1</field>
|
||||
<field name="action" ref="wiz_lims_notebook_line_limits_validation"/>
|
||||
</record>
|
||||
|
||||
<!-- Wizard Internal Relations Calculation 1 (repetition zero) -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_notebook_internal_relations_calc_1_start_view_form">
|
||||
<field name="model">lims.notebook.internal_relations_calc_1.start</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">notebook_internal_relations_calc_1_start_form</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.wizard" id="wiz_lims_notebook_internal_relations_calc_1">
|
||||
<field name="name">Internal Relations Calculation</field>
|
||||
<field name="wiz_name">lims.notebook.internal_relations_calc_1</field>
|
||||
</record>
|
||||
<record model="ir.action.keyword" id="lims_notebook_internal_relations_calc_1_keyword">
|
||||
<field name="keyword">form_action</field>
|
||||
<field name="model">lims.notebook,-1</field>
|
||||
<field name="action" ref="wiz_lims_notebook_internal_relations_calc_1"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.wizard" id="wiz_lims_notebook_line_internal_relations_calc_1">
|
||||
<field name="name">Internal Relations Calculation</field>
|
||||
<field name="wiz_name">lims.notebook_line.internal_relations_calc_1</field>
|
||||
</record>
|
||||
<record model="ir.action.keyword" id="lims_notebook_line_internal_relations_calc_1_keyword">
|
||||
<field name="keyword">form_action</field>
|
||||
<field name="model">lims.notebook.line,-1</field>
|
||||
<field name="action" ref="wiz_lims_notebook_line_internal_relations_calc_1"/>
|
||||
</record>
|
||||
|
||||
<!-- Wizard Internal Relations Calculation 2 (with repetitions) -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_notebook_internal_relations_calc_2_start_view_form">
|
||||
<field name="model">lims.notebook.internal_relations_calc_2.start</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">notebook_internal_relations_calc_2_start_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_notebook_internal_relations_calc_2_result_view_form">
|
||||
<field name="model">lims.notebook.internal_relations_calc_2.result</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">notebook_internal_relations_calc_2_result_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_notebook_internal_relations_calc_2_process_view_form">
|
||||
<field name="model">lims.notebook.internal_relations_calc_2.process</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">notebook_internal_relations_calc_2_process_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_notebook_internal_relations_calc_2_variable_view_list">
|
||||
<field name="model">lims.notebook.internal_relations_calc_2.variable</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">notebook_internal_relations_calc_2_variable_list</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_notebook_internal_relations_calc_2_variable_view_form">
|
||||
<field name="model">lims.notebook.internal_relations_calc_2.variable</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">notebook_internal_relations_calc_2_variable_form</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.wizard" id="wiz_lims_notebook_internal_relations_calc_2">
|
||||
<field name="name">Internal Relations Calculation</field>
|
||||
<field name="wiz_name">lims.notebook.internal_relations_calc_2</field>
|
||||
</record>
|
||||
<record model="ir.action.keyword" id="lims_notebook_internal_relations_calc_2_keyword">
|
||||
<field name="keyword">form_action</field>
|
||||
<field name="model">lims.notebook,-1</field>
|
||||
<field name="action" ref="wiz_lims_notebook_internal_relations_calc_2"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.wizard" id="wiz_lims_notebook_line_internal_relations_calc_2">
|
||||
<field name="name">Internal Relations Calculation</field>
|
||||
<field name="wiz_name">lims.notebook_line.internal_relations_calc_2</field>
|
||||
</record>
|
||||
<record model="ir.action.keyword" id="lims_notebook_line_internal_relations_calc_2_keyword">
|
||||
<field name="keyword">form_action</field>
|
||||
<field name="model">lims.notebook.line,-1</field>
|
||||
<field name="action" ref="wiz_lims_notebook_line_internal_relations_calc_2"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.field.access" id="access_internal_relations_calc_2_process_variables">
|
||||
<field name="field"
|
||||
search="[('name', '=', 'variables'), ('model.model', '=', 'lims.notebook.internal_relations_calc_2.process')]"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
<field name="perm_create" eval="False"/>
|
||||
<field name="perm_delete" eval="False"/>
|
||||
</record>
|
||||
|
||||
<!-- Wizard Load Results by Formula -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_notebook_load_results_formula_start_view_form">
|
||||
<field name="model">lims.notebook.load_results_formula.start</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">notebook_load_results_formula_start_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_notebook_load_results_formula_empty_view_form">
|
||||
<field name="model">lims.notebook.load_results_formula.empty</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">notebook_load_results_formula_empty_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_notebook_load_results_formula_result_view_form">
|
||||
<field name="model">lims.notebook.load_results_formula.result</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">notebook_load_results_formula_result_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_notebook_load_results_formula_process_view_form">
|
||||
<field name="model">lims.notebook.load_results_formula.process</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">notebook_load_results_formula_process_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_notebook_load_results_formula_variable_view_list">
|
||||
<field name="model">lims.notebook.load_results_formula.variable</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">notebook_load_results_formula_variable_list</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_notebook_load_results_formula_variable_view_form">
|
||||
<field name="model">lims.notebook.load_results_formula.variable</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">notebook_load_results_formula_variable_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_notebook_load_results_formula_beginning_view_form">
|
||||
<field name="model">lims.notebook.load_results_formula.beginning</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">notebook_load_results_formula_beginning_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_notebook_load_results_formula_confirm_view_form">
|
||||
<field name="model">lims.notebook.load_results_formula.confirm</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">notebook_load_results_formula_confirm_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_notebook_load_results_formula_sit1_view_form">
|
||||
<field name="model">lims.notebook.load_results_formula.sit1</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">notebook_load_results_formula_sit1_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_notebook_load_results_formula_sit2_view_form">
|
||||
<field name="model">lims.notebook.load_results_formula.sit2</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">notebook_load_results_formula_sit2_form</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="lims_notebook_load_results_formula_sit2_detail_view_list">
|
||||
<field name="model">lims.notebook.load_results_formula.sit2.detail</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">notebook_load_results_formula_sit2_detail_list</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_notebook_load_results_formula_sit2_detail_view_form">
|
||||
<field name="model">lims.notebook.load_results_formula.sit2.detail</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">notebook_load_results_formula_sit2_detail_form</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.wizard" id="wiz_lims_notebook_load_results_formula">
|
||||
<field name="name">Load Results by Formula</field>
|
||||
<field name="wiz_name">lims.notebook.load_results_formula</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.field.access" id="access_load_results_formula_sit2_details">
|
||||
<field name="field"
|
||||
search="[('name', '=', 'details'), ('model.model', '=', 'lims.notebook.load_results_formula.sit2')]"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
<field name="perm_create" eval="False"/>
|
||||
<field name="perm_delete" eval="False"/>
|
||||
</record>
|
||||
|
||||
<!-- Wizard Load Results Manually -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_notebook_load_results_manual_start_view_form">
|
||||
<field name="model">lims.notebook.load_results_manual.start</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">notebook_load_results_manual_start_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_notebook_load_results_manual_empty_view_form">
|
||||
<field name="model">lims.notebook.load_results_manual.empty</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">notebook_load_results_manual_empty_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_notebook_load_results_manual_result_view_form">
|
||||
<field name="model">lims.notebook.load_results_manual.result</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">notebook_load_results_manual_result_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_notebook_load_results_manual_result_line_view_list">
|
||||
<field name="model">lims.notebook.load_results_manual.line</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">notebook_load_results_manual_result_line_list</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_notebook_load_results_manual_result_line_view_form">
|
||||
<field name="model">lims.notebook.load_results_manual.line</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">notebook_load_results_manual_result_line_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_notebook_load_results_manual_sit1_view_form">
|
||||
<field name="model">lims.notebook.load_results_manual.sit1</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">notebook_load_results_manual_sit1_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_notebook_load_results_manual_sit2_view_form">
|
||||
<field name="model">lims.notebook.load_results_manual.sit2</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">notebook_load_results_manual_sit2_form</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.wizard" id="wiz_lims_notebook_load_results_manual">
|
||||
<field name="name">Load Results Manually</field>
|
||||
<field name="wiz_name">lims.notebook.load_results_manual</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.field.access" id="access_load_results_manual_result_lines">
|
||||
<field name="field"
|
||||
search="[('name', '=', 'lines'), ('model.model', '=', 'lims.notebook.load_results_manual.result')]"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
<field name="perm_create" eval="False"/>
|
||||
<field name="perm_delete" eval="False"/>
|
||||
</record>
|
||||
|
||||
<!-- Wizard Add Internal Relations -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_notebook_add_internal_relations_start_view_form">
|
||||
<field name="model">lims.notebook.add_internal_relations.start</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">notebook_add_internal_relations_form</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.wizard" id="wiz_lims_notebook_add_internal_relations">
|
||||
<field name="name">Add Internal Relations</field>
|
||||
<field name="wiz_name">lims.notebook.add_internal_relations</field>
|
||||
</record>
|
||||
<record model="ir.action.keyword" id="lims_notebook_add_internal_relations_keyword">
|
||||
<field name="keyword">form_action</field>
|
||||
<field name="model">lims.notebook,-1</field>
|
||||
<field name="action" ref="wiz_lims_notebook_add_internal_relations"/>
|
||||
</record>
|
||||
|
||||
<!-- Wizard Repeat Analysis -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_notebook_line_repeat_analysis_start_view_form">
|
||||
<field name="model">lims.notebook.line.repeat_analysis.start</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">notebook_line_repeat_analysis_form</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.wizard" id="wiz_lims_notebook_line_repeat_analysis">
|
||||
<field name="name">Repeat Analysis</field>
|
||||
<field name="wiz_name">lims.notebook.line.repeat_analysis</field>
|
||||
</record>
|
||||
<record model="ir.action.keyword" id="lims_lims_notebook_line_repeat_analysis_keyword">
|
||||
<field name="keyword">form_action</field>
|
||||
<field name="model">lims.notebook.line,-1</field>
|
||||
<field name="action" ref="wiz_lims_notebook_line_repeat_analysis"/>
|
||||
</record>
|
||||
|
||||
<!-- Wizard Accept Lines -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_notebook_accept_lines_start_view_form">
|
||||
<field name="model">lims.notebook.accept_lines.start</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">notebook_accept_lines_form</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.wizard" id="wiz_lims_notebook_accept_lines">
|
||||
<field name="name">Accept Lines</field>
|
||||
<field name="wiz_name">lims.notebook.accept_lines</field>
|
||||
</record>
|
||||
<record model="ir.action.keyword" id="lims_notebook_accept_lines_keyword">
|
||||
<field name="keyword">form_action</field>
|
||||
<field name="model">lims.notebook,-1</field>
|
||||
<field name="action" ref="wiz_lims_notebook_accept_lines"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.wizard" id="wiz_lims_notebook_line_accept_lines">
|
||||
<field name="name">Accept Lines</field>
|
||||
<field name="wiz_name">lims.notebook_line.accept_lines</field>
|
||||
</record>
|
||||
<record model="ir.action.keyword" id="lims_notebook_line_accept_lines_keyword">
|
||||
<field name="keyword">form_action</field>
|
||||
<field name="model">lims.notebook.line,-1</field>
|
||||
<field name="action" ref="wiz_lims_notebook_line_accept_lines"/>
|
||||
</record>
|
||||
|
||||
<!-- Wizard Unaccept Lines -->
|
||||
|
||||
<record model="ir.action.wizard" id="wiz_lims_notebook_line_unaccept_lines">
|
||||
<field name="name">Unaccept Lines</field>
|
||||
<field name="wiz_name">lims.notebook_line.unaccept_lines</field>
|
||||
</record>
|
||||
<record model="ir.action.keyword" id="lims_notebook_line_unaccept_lines_keyword">
|
||||
<field name="keyword">form_action</field>
|
||||
<field name="model">lims.notebook.line,-1</field>
|
||||
<field name="action" ref="wiz_lims_notebook_line_unaccept_lines"/>
|
||||
</record>
|
||||
|
||||
<!-- Wizard Results Verification -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_notebook_results_verification_view_form">
|
||||
<field name="model">lims.notebook.results_verification.start</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">notebook_results_verification_form</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.wizard" id="wiz_lims_notebook_results_verification">
|
||||
<field name="name">Results Verification</field>
|
||||
<field name="wiz_name">lims.notebook.results_verification</field>
|
||||
</record>
|
||||
<record model="ir.action.keyword" id="lims_notebook_results_verification_keyword">
|
||||
<field name="keyword">form_action</field>
|
||||
<field name="model">lims.notebook,-1</field>
|
||||
<field name="action" ref="wiz_lims_notebook_results_verification"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.wizard" id="wiz_lims_notebook_line_results_verification">
|
||||
<field name="name">Results Verification</field>
|
||||
<field name="wiz_name">lims.notebook_line.results_verification</field>
|
||||
</record>
|
||||
<record model="ir.action.keyword" id="lims_notebook_line_results_verification_keyword">
|
||||
<field name="keyword">form_action</field>
|
||||
<field name="model">lims.notebook.line,-1</field>
|
||||
<field name="action" ref="wiz_lims_notebook_line_results_verification"/>
|
||||
</record>
|
||||
|
||||
<!-- Wizard Uncertainty Calculation -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_notebook_uncertainty_calc_view_form">
|
||||
<field name="model">lims.notebook.uncertainty_calc.start</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">notebook_uncertainty_calc_form</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.wizard" id="wiz_lims_notebook_uncertainty_calc">
|
||||
<field name="name">Uncertainty Calculation</field>
|
||||
<field name="wiz_name">lims.notebook.uncertainty_calc</field>
|
||||
</record>
|
||||
<record model="ir.action.keyword" id="lims_notebook_uncertainty_calc_keyword">
|
||||
<field name="keyword">form_action</field>
|
||||
<field name="model">lims.notebook,-1</field>
|
||||
<field name="action" ref="wiz_lims_notebook_uncertainty_calc"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.wizard" id="wiz_lims_notebook_line_uncertainty_calc">
|
||||
<field name="name">Uncertainty Calculation</field>
|
||||
<field name="wiz_name">lims.notebook_line.uncertainty_calc</field>
|
||||
</record>
|
||||
<record model="ir.action.keyword" id="lims_notebook_line_uncertainty_calc_keyword">
|
||||
<field name="keyword">form_action</field>
|
||||
<field name="model">lims.notebook.line,-1</field>
|
||||
<field name="action" ref="wiz_lims_notebook_line_uncertainty_calc"/>
|
||||
</record>
|
||||
|
||||
<!-- Wizard Precision Control -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_notebook_precision_control_view_form">
|
||||
<field name="model">lims.notebook.precision_control.start</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">notebook_precision_control_form</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.wizard" id="wiz_lims_notebook_precision_control">
|
||||
<field name="name">Precision Control</field>
|
||||
<field name="wiz_name">lims.notebook.precision_control</field>
|
||||
</record>
|
||||
<record model="ir.action.keyword" id="lims_notebook_precision_control_keyword">
|
||||
<field name="keyword">form_action</field>
|
||||
<field name="model">lims.notebook,-1</field>
|
||||
<field name="action" ref="wiz_lims_notebook_precision_control"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.wizard" id="wiz_lims_notebook_line_precision_control">
|
||||
<field name="name">Precision Control</field>
|
||||
<field name="wiz_name">lims.notebook_line.precision_control</field>
|
||||
</record>
|
||||
<record model="ir.action.keyword" id="lims_notebook_line_precision_control_keyword">
|
||||
<field name="keyword">form_action</field>
|
||||
<field name="model">lims.notebook.line,-1</field>
|
||||
<field name="action" ref="wiz_lims_notebook_line_precision_control"/>
|
||||
</record>
|
||||
|
||||
<!-- Change Estimated Days For Results -->
|
||||
|
||||
<record model="ir.ui.view" id="change_results_estimated_waiting_start_view_form">
|
||||
<field name="model">lims.change_results_estimated_waiting.start</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">change_results_estimated_waiting_start_form</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.wizard" id="wiz_change_results_estimated_waiting">
|
||||
<field name="name">Change Estimated Days For Results</field>
|
||||
<field name="wiz_name">lims.change_results_estimated_waiting</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.keyword" id="change_results_estimated_waiting_keyword">
|
||||
<field name="keyword">form_action</field>
|
||||
<field name="model">lims.notebook.line.all_fields,-1</field>
|
||||
<field name="action" ref="wiz_change_results_estimated_waiting"/>
|
||||
</record>
|
||||
|
||||
<!-- Analysis Pending of Inform -->
|
||||
|
||||
<record model="ir.ui.view" id="print_analysis_pending_inform_start_view_form">
|
||||
<field name="model">lims.print_analysis_pending_inform.start</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">analysis_pending_inform_start_form</field>
|
||||
</record>
|
||||
<record model="ir.action.wizard" id="wiz_print_analysis_pending_inform">
|
||||
<field name="name">Pending analysis Unchecked</field>
|
||||
<field name="wiz_name">lims.print_analysis_pending_inform</field>
|
||||
</record>
|
||||
<record model="ir.action.report" id="report_analysis_pending_inform">
|
||||
<field name="name">Pending analysis Unchecked</field>
|
||||
<field name="report_name">lims.analysis_pending_inform</field>
|
||||
<field name="report">lims/report/analysis_pending_inform.ods</field>
|
||||
</record>
|
||||
|
||||
|
||||
<!-- Analysis Checked pending of inform -->
|
||||
|
||||
<record model="ir.ui.view" id="print_analysis_checked_pending_inform_start_view_form">
|
||||
<field name="model">lims.print_analysis_checked_pending_inform.start</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">print_analysis_checked_pending_inform_start_view_form</field>
|
||||
</record>
|
||||
<record model="ir.action.wizard" id="wiz_print_analysis_checked_pending_inform">
|
||||
<field name="name">Analysis checked pending of inform</field>
|
||||
<field name="wiz_name">lims.print_analysis_checked_pending_inform</field>
|
||||
</record>
|
||||
<record model="ir.action.report" id="report_analysis_checked_pending_inform">
|
||||
<field name="name">Analysis checked pending of inform</field>
|
||||
<field name="report_name">lims.analysis_checked_pending_inform</field>
|
||||
<field name="report">lims/report/analysis_checked_pending_inform.ods</field>
|
||||
</record>
|
||||
|
||||
<menuitem parent="lims_laboratory" action="act_lims_notebook_list"
|
||||
id="lims_notebook_menu" sequence="15"
|
||||
icon="lims-notebook"/>
|
||||
<menuitem parent="lims_notebook_menu" action="act_lims_notebook_line_all_fields_list"
|
||||
id="lims_notebook_line_all_menu" sequence="10"
|
||||
icon="lims-notebook_line_all_menu"/>
|
||||
<menuitem parent="lims_notebook_line_all_menu" action="wiz_print_analysis_pending_inform"
|
||||
id="menu_print_analysis_pending_inform" sequence="100"
|
||||
icon="tryton-print"/>
|
||||
<menuitem parent="lims_notebook_line_all_menu" action="wiz_print_analysis_checked_pending_inform"
|
||||
id="menu_print_analysis_checked_pending_inform" sequence="100"
|
||||
icon="tryton-print"/>
|
||||
|
||||
<menuitem name="Results entry" parent="lims_laboratory"
|
||||
id="lims_laboratory_results" sequence="20"
|
||||
icon="lims-laboratory_results"/>
|
||||
<menuitem parent="lims_laboratory_results" action="wiz_lims_notebook_load_results_manual"
|
||||
id="lims_notebook_load_results_manual_menu" sequence="10"
|
||||
icon="lims-notebook_load_results_manual"/>
|
||||
<menuitem parent="lims_laboratory_results" action="wiz_lims_notebook_load_results_formula"
|
||||
id="lims_notebook_load_results_formula_menu" sequence="20"
|
||||
icon="lims-notebook_load_results_formula"/>
|
||||
|
||||
<record model="ir.model.access" id="access_notebook_views">
|
||||
<field name="model" search="[('model', '=', 'lims.notebook.view')]"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
<field name="perm_create" eval="False"/>
|
||||
<field name="perm_delete" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.access" id="access_notebook_views_group_conf_laboratory_admin">
|
||||
<field name="model" search="[('model', '=', 'lims.notebook.view')]"/>
|
||||
<field name="group" ref="group_lims_conf_laboratory_admin"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
<field name="perm_create" eval="True"/>
|
||||
<field name="perm_delete" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.access" id="access_notebook">
|
||||
<field name="model" search="[('model', '=', 'lims.notebook')]"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
<field name="perm_create" eval="False"/>
|
||||
<field name="perm_delete" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.access" id="access_notebook_group_notebook">
|
||||
<field name="model" search="[('model', '=', 'lims.notebook')]"/>
|
||||
<field name="group" ref="group_lims_notebook"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
<field name="perm_create" eval="False"/>
|
||||
<field name="perm_delete" eval="False"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.access" id="access_notebook_line">
|
||||
<field name="model" search="[('model', '=', 'lims.notebook.line')]"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
<field name="perm_create" eval="False"/>
|
||||
<field name="perm_delete" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.access" id="access_notebook_line_group_notebook">
|
||||
<field name="model" search="[('model', '=', 'lims.notebook.line')]"/>
|
||||
<field name="group" ref="group_lims_notebook"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
<field name="perm_create" eval="False"/>
|
||||
<field name="perm_delete" eval="False"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.field.access" id="access_notebook_line_accepted">
|
||||
<field name="field" search="[('name', '=', 'accepted'), ('model.model', '=', 'lims.notebook.line')]"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
<field name="perm_create" eval="False"/>
|
||||
<field name="perm_delete" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.field.access" id="access_notebook_line_accepted_group_laboratory_results_acceptance">
|
||||
<field name="field" search="[('name', '=', 'accepted'), ('model.model', '=', 'lims.notebook.line')]"/>
|
||||
<field name="group" ref="group_lims_laboratory_results_acceptance"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
<field name="perm_create" eval="True"/>
|
||||
<field name="perm_delete" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.menu-res.group" id="menu_lims_group_notebook_readonly">
|
||||
<field name="menu" ref="lims_menu"/>
|
||||
<field name="group" ref="group_lims_notebook_readonly"/>
|
||||
</record>
|
||||
<record model="ir.ui.menu-res.group" id="menu_lims_group_notebook">
|
||||
<field name="menu" ref="lims_menu"/>
|
||||
<field name="group" ref="group_lims_notebook"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.menu-res.group" id="menu_laboratory_group_notebook_readonly">
|
||||
<field name="menu" ref="lims_laboratory"/>
|
||||
<field name="group" ref="group_lims_notebook_readonly"/>
|
||||
</record>
|
||||
<record model="ir.ui.menu-res.group" id="menu_laboratory_group_notebook">
|
||||
<field name="menu" ref="lims_laboratory"/>
|
||||
<field name="group" ref="group_lims_notebook"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.menu-res.group" id="menu_notebook_group_notebook_readonly">
|
||||
<field name="menu" ref="lims_notebook_menu"/>
|
||||
<field name="group" ref="group_lims_notebook_readonly"/>
|
||||
</record>
|
||||
<record model="ir.ui.menu-res.group" id="menu_notebook_group_notebook">
|
||||
<field name="menu" ref="lims_notebook_menu"/>
|
||||
<field name="group" ref="group_lims_notebook"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.menu-res.group" id="menu_notebook_line_all_group_notebook_readonly">
|
||||
<field name="menu" ref="lims_notebook_line_all_menu"/>
|
||||
<field name="group" ref="group_lims_notebook_readonly"/>
|
||||
</record>
|
||||
<record model="ir.ui.menu-res.group" id="menu_notebook_line_all_group_notebook">
|
||||
<field name="menu" ref="lims_notebook_line_all_menu"/>
|
||||
<field name="group" ref="group_lims_notebook"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.menu-res.group" id="menu_lims_group_laboratory_results">
|
||||
<field name="menu" ref="lims_menu"/>
|
||||
<field name="group" ref="group_lims_laboratory_results"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.menu-res.group" id="menu_laboratory_group_laboratory_results">
|
||||
<field name="menu" ref="lims_laboratory"/>
|
||||
<field name="group" ref="group_lims_laboratory_results"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.menu-res.group" id="menu_laboratory_results_group_laboratory_results">
|
||||
<field name="menu" ref="lims_laboratory_results"/>
|
||||
<field name="group" ref="group_lims_laboratory_results"/>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</tryton>
|
|
@ -65,12 +65,8 @@ class Address:
|
|||
Bool(Eval('report_contact')),
|
||||
Bool(Eval('acknowledgment_contact'))),
|
||||
},
|
||||
depends=['invoice_contact', 'report_contact',
|
||||
'acknowledgment_contact'])
|
||||
invoice_contact = fields.Boolean('Invoice contact')
|
||||
invoice_contact_default = fields.Boolean('Invoice contact by default',
|
||||
states={'readonly': ~Bool(Eval('invoice_contact'))},
|
||||
depends=['invoice_contact'])
|
||||
depends=['report_contact', 'acknowledgment_contact',
|
||||
'invoice_contact'])
|
||||
report_contact = fields.Boolean('Report contact')
|
||||
report_contact_default = fields.Boolean('Report contact by default',
|
||||
states={'readonly': ~Bool(Eval('report_contact'))},
|
||||
|
@ -80,6 +76,10 @@ class Address:
|
|||
'Acknowledgment contact by default',
|
||||
states={'readonly': ~Bool(Eval('acknowledgment_contact'))},
|
||||
depends=['acknowledgment_contact'])
|
||||
invoice_contact = fields.Boolean('Invoice contact')
|
||||
invoice_contact_default = fields.Boolean('Invoice contact by default',
|
||||
states={'readonly': ~Bool(Eval('invoice_contact'))},
|
||||
depends=['invoice_contact'])
|
||||
|
||||
@classmethod
|
||||
def __setup__(cls):
|
||||
|
@ -88,11 +88,6 @@ class Address:
|
|||
'invoice_address': 'There is already a address with invoice type',
|
||||
})
|
||||
|
||||
@fields.depends('invoice_contact')
|
||||
def on_change_invoice_contact(self):
|
||||
if not self.invoice_contact:
|
||||
self.invoice_contact_default = False
|
||||
|
||||
@fields.depends('report_contact')
|
||||
def on_change_report_contact(self):
|
||||
if not self.report_contact:
|
||||
|
@ -103,21 +98,10 @@ class Address:
|
|||
if not self.acknowledgment_contact:
|
||||
self.acknowledgment_contact_default = False
|
||||
|
||||
@classmethod
|
||||
def validate(cls, addresses):
|
||||
super(Address, cls).validate(addresses)
|
||||
for address in addresses:
|
||||
address.check_invoice_type()
|
||||
|
||||
def check_invoice_type(self):
|
||||
if self.invoice:
|
||||
addresses = self.search([
|
||||
('party', '=', self.party.id),
|
||||
('invoice', '=', True),
|
||||
('id', '!=', self.id),
|
||||
])
|
||||
if addresses:
|
||||
self.raise_user_error('invoice_address')
|
||||
@fields.depends('invoice_contact')
|
||||
def on_change_invoice_contact(self):
|
||||
if not self.invoice_contact:
|
||||
self.invoice_contact_default = False
|
||||
|
||||
|
||||
class Company:
|
||||
|
@ -125,7 +109,7 @@ class Company:
|
|||
__metaclass__ = PoolMeta
|
||||
|
||||
def get_timezone(self):
|
||||
timezone = None
|
||||
timezone = pytz.utc
|
||||
if self.timezone:
|
||||
timezone = pytz.timezone(self.timezone)
|
||||
return timezone
|
||||
|
|
|
@ -1,52 +0,0 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# This file is part of lims module for Tryton.
|
||||
# The COPYRIGHT file at the top level of this repository contains
|
||||
# the full copyright notices and license terms.
|
||||
|
||||
from trytond.model import fields, Unique
|
||||
from trytond.pool import PoolMeta
|
||||
|
||||
__all__ = ['Uom', 'UomCategory', 'Template']
|
||||
|
||||
|
||||
class Uom:
|
||||
__name__ = 'product.uom'
|
||||
__metaclass__ = PoolMeta
|
||||
|
||||
maximum_concentration = fields.Char('Maximum concentration')
|
||||
rsd_horwitz = fields.Char('% RSD Horwitz')
|
||||
|
||||
@classmethod
|
||||
def __setup__(cls):
|
||||
super(Uom, cls).__setup__()
|
||||
cls.symbol.size = 30
|
||||
t = cls.__table__()
|
||||
cls._sql_constraints += [
|
||||
('symbol_uniq', Unique(t, t.symbol),
|
||||
'UoM symbol must be unique'),
|
||||
]
|
||||
|
||||
def get_rec_name(self, name):
|
||||
return self.symbol
|
||||
|
||||
|
||||
class UomCategory:
|
||||
__name__ = 'product.uom.category'
|
||||
__metaclass__ = PoolMeta
|
||||
|
||||
lims_only_available = fields.Boolean('Only available in Lims')
|
||||
|
||||
@staticmethod
|
||||
def default_lims_only_available():
|
||||
return False
|
||||
|
||||
|
||||
class Template:
|
||||
__name__ = "product.template"
|
||||
__metaclass__ = PoolMeta
|
||||
|
||||
@classmethod
|
||||
def __setup__(cls):
|
||||
super(Template, cls).__setup__()
|
||||
new_domain = [('category.lims_only_available', '!=', True)]
|
||||
cls.default_uom.domain = new_domain
|
|
@ -1,33 +0,0 @@
|
|||
<?xml version="1.0"?>
|
||||
<tryton>
|
||||
<data>
|
||||
|
||||
<!-- Product UoM -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_uom_view_list">
|
||||
<field name="model">product.uom</field>
|
||||
<field name="inherit" ref="product.uom_view_tree"/>
|
||||
<field name="name">product_uom_list</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_uom_view_form">
|
||||
<field name="model">product.uom</field>
|
||||
<field name="inherit" ref="product.uom_view_form"/>
|
||||
<field name="name">product_uom_form</field>
|
||||
</record>
|
||||
|
||||
<!-- UoM Categories -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_uom_category_view_list">
|
||||
<field name="model">product.uom.category</field>
|
||||
<field name="inherit" ref="product.uom_category_view_tree"/>
|
||||
<field name="name">product_uom_category_list</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="lims_uom_category_view_form">
|
||||
<field name="model">product.uom.category</field>
|
||||
<field name="inherit" ref="product.uom_category_view_form"/>
|
||||
<field name="name">product_uom_category_form</field>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</tryton>
|
|
@ -0,0 +1,483 @@
|
|||
<?xml version="1.0"?>
|
||||
<tryton>
|
||||
<data>
|
||||
|
||||
<record model="ir.ui.icon" id="laboratory_reports_icon">
|
||||
<field name="name">lims-laboratory_reports</field>
|
||||
<field name="path">icons/laboratory_reports.svg</field>
|
||||
</record>
|
||||
<record model="ir.ui.icon" id="generate_results_report_icon">
|
||||
<field name="name">lims-generate_results_report</field>
|
||||
<field name="path">icons/generate_results_report.svg</field>
|
||||
</record>
|
||||
<record model="ir.ui.icon" id="results_report_version_detail_icon">
|
||||
<field name="name">lims-results_report_version_detail</field>
|
||||
<field name="path">icons/results_report_version_detail.svg</field>
|
||||
</record>
|
||||
|
||||
<!-- Sequences for Results Report -->
|
||||
|
||||
<record model="ir.sequence.type" id="seq_type_results_report">
|
||||
<field name="name">Results Report</field>
|
||||
<field name="code">lims.results_report</field>
|
||||
</record>
|
||||
<record model="ir.sequence.type-res.group"
|
||||
id="seq_type_results_report_group_admin">
|
||||
<field name="sequence_type" ref="seq_type_results_report"/>
|
||||
<field name="group" ref="res.group_admin"/>
|
||||
</record>
|
||||
|
||||
<!-- Results Report -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_results_report_view_list">
|
||||
<field name="model">lims.results_report</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">results_report_list</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_results_report_view_form">
|
||||
<field name="model">lims.results_report</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">results_report_form</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.act_window" id="act_lims_results_report">
|
||||
<field name="name">Results Reports</field>
|
||||
<field name="res_model">lims.results_report</field>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_lims_results_report_view_list">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="lims_results_report_view_list"/>
|
||||
<field name="act_window" ref="act_lims_results_report"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_lims_results_report_view_form">
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="view" ref="lims_results_report_view_form"/>
|
||||
<field name="act_window" ref="act_lims_results_report"/>
|
||||
</record>
|
||||
|
||||
<!-- Results Report Version -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_results_report_version_view_list">
|
||||
<field name="model">lims.results_report.version</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">results_report_version_list</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_results_report_version_view_form">
|
||||
<field name="model">lims.results_report.version</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">results_report_version_form</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.rule.group" id="rule_group_results_report_version">
|
||||
<field name="model" search="[('model', '=', 'lims.results_report.version')]"/>
|
||||
<field name="global_p" eval="True"/>
|
||||
</record>
|
||||
<record model="ir.rule" id="rule_results_report_version">
|
||||
<field name="domain"
|
||||
eval="[If(Bool(Eval('user', {}).get('laboratory', False)), ('laboratory', '=', Eval('user', {}).get('laboratory', None)), If(Bool(Eval('user', {}).get('laboratories', False)), ('laboratory', 'in', Eval('user', {}).get('laboratories', [])), ('id', '!=', 0)))]"
|
||||
pyson="1"/>
|
||||
<field name="rule_group" ref="rule_group_results_report_version"/>
|
||||
</record>
|
||||
|
||||
<!-- Results Report Version Detail -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_results_report_version_detail_view_list">
|
||||
<field name="model">lims.results_report.version.detail</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">results_report_version_detail_list</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_results_report_version_detail_view_form">
|
||||
<field name="model">lims.results_report.version.detail</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">results_report_version_detail_form</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.act_window" id="act_lims_results_report_version_detail">
|
||||
<field name="name">Approval of Reports</field>
|
||||
<field name="res_model">lims.results_report.version.detail</field>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_lims_results_report_version_detail_view_list">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="lims_results_report_version_detail_view_list"/>
|
||||
<field name="act_window" ref="act_lims_results_report_version_detail"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_lims_results_report_version_detail_view_form">
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="view" ref="lims_results_report_version_detail_view_form"/>
|
||||
<field name="act_window" ref="act_lims_results_report_version_detail"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.rule.group" id="rule_group_results_report_version_detail">
|
||||
<field name="model" search="[('model', '=', 'lims.results_report.version.detail')]"/>
|
||||
<field name="global_p" eval="True"/>
|
||||
</record>
|
||||
<record model="ir.rule" id="rule_results_report_version_detail">
|
||||
<field name="domain"
|
||||
eval="[If(Bool(Eval('user', {}).get('laboratory', False)), ('laboratory', '=', Eval('user', {}).get('laboratory', None)), If(Bool(Eval('user', {}).get('laboratories', False)), ('laboratory', 'in', Eval('user', {}).get('laboratories', [])), ('id', '!=', 0)))]"
|
||||
pyson="1"/>
|
||||
<field name="rule_group" ref="rule_group_results_report_version_detail"/>
|
||||
</record>
|
||||
|
||||
<!-- Results Report Version Detail Line -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_results_report_version_detail_line_view_list">
|
||||
<field name="model">lims.results_report.version.detail.line</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">results_report_version_detail_line_list</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_results_report_version_detail_line_view_form">
|
||||
<field name="model">lims.results_report.version.detail.line</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">results_report_version_detail_line_form</field>
|
||||
</record>
|
||||
|
||||
<!-- Wizard Divide Reports -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_divide_reports_result_view_form">
|
||||
<field name="model">lims.divide_reports.result</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">service_divide_reports_result_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_divide_reports_process_view_form">
|
||||
<field name="model">lims.divide_reports.process</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">service_divide_reports_process_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_divide_reports_detail_view_form">
|
||||
<field name="model">lims.divide_reports.detail</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">service_divide_reports_detail_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_divide_reports_detail_view_list">
|
||||
<field name="model">lims.divide_reports.detail</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">service_divide_reports_detail_list</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.wizard" id="wiz_lims_divide_reports">
|
||||
<field name="name">Divide Reports</field>
|
||||
<field name="wiz_name">lims.divide_reports</field>
|
||||
</record>
|
||||
<record model="ir.action.keyword" id="lims_divide_reports_keyword">
|
||||
<field name="keyword">form_action</field>
|
||||
<field name="model">lims.entry,-1</field>
|
||||
<field name="action" ref="wiz_lims_divide_reports"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.field.access" id="access_divide_reports_process_analysis_detail">
|
||||
<field name="field"
|
||||
search="[('name', '=', 'analysis_detail'), ('model.model', '=', 'lims.divide_reports.process')]"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
<field name="perm_create" eval="False"/>
|
||||
<field name="perm_delete" eval="False"/>
|
||||
</record>
|
||||
|
||||
<!-- Wizard Generate Results Reports -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_generate_results_report_start_view_form">
|
||||
<field name="model">lims.generate_results_report.start</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">generate_results_report_start_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_generate_results_report_empty_view_form">
|
||||
<field name="model">lims.generate_results_report.empty</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">generate_results_report_empty_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_generate_results_report_result_aut_view_form">
|
||||
<field name="model">lims.generate_results_report.result_aut</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">generate_results_report_result_aut_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_generate_results_report_result_man_view_form">
|
||||
<field name="model">lims.generate_results_report.result_man</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">generate_results_report_result_man_form</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="lims_generate_results_report_result_aut_notebook_view_list">
|
||||
<field name="model">lims.generate_results_report.aut.notebook</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">generate_results_report_result_aut_notebook_list</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_generate_results_report_result_aut_notebook_view_form">
|
||||
<field name="model">lims.generate_results_report.aut.notebook</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">generate_results_report_result_aut_notebook_form</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="lims_generate_results_report_result_aut_excluded_notebook_view_list">
|
||||
<field name="model">lims.generate_results_report.aut.excluded_notebook</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">generate_results_report_result_aut_excluded_notebook_list</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_generate_results_report_result_aut_excluded_notebook_view_form">
|
||||
<field name="model">lims.generate_results_report.aut.excluded_notebook</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">generate_results_report_result_aut_excluded_notebook_form</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.wizard" id="wiz_lims_generate_results_report">
|
||||
<field name="name">Generate Reports</field>
|
||||
<field name="wiz_name">lims.generate_results_report</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="lims_notebook_line_generate_results_view_list">
|
||||
<field name="model">lims.notebook.line</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">notebook_line_generate_results_list</field>
|
||||
</record>
|
||||
|
||||
<!-- Wizard Print Global Results Report -->
|
||||
|
||||
<record model="ir.action.wizard" id="wiz_lims_print_results_report">
|
||||
<field name="name">Print Global Report</field>
|
||||
<field name="wiz_name">lims.print_results_report</field>
|
||||
</record>
|
||||
<record model="ir.action.keyword" id="lims_print_results_report_keyword">
|
||||
<field name="keyword">form_print</field>
|
||||
<field name="model">lims.results_report,-1</field>
|
||||
<field name="action" ref="wiz_lims_print_results_report"/>
|
||||
</record>
|
||||
|
||||
<!-- Wizard Service Results Report -->
|
||||
|
||||
<record model="ir.action.wizard" id="wiz_lims_service_results_report">
|
||||
<field name="name">Service Results Reports</field>
|
||||
<field name="wiz_name">lims.service.results_report</field>
|
||||
</record>
|
||||
<record model="ir.action.keyword" id="lims_service_results_report_keyword">
|
||||
<field name="keyword">form_relate</field>
|
||||
<field name="model">lims.service,-1</field>
|
||||
<field name="action" ref="wiz_lims_service_results_report"/>
|
||||
</record>
|
||||
|
||||
<!-- Wizard Fraction Results Report -->
|
||||
|
||||
<record model="ir.action.wizard" id="wiz_lims_fraction_results_report">
|
||||
<field name="name">Fraction Results Reports</field>
|
||||
<field name="wiz_name">lims.fraction.results_report</field>
|
||||
</record>
|
||||
<record model="ir.action.keyword" id="lims_fraction_results_report_keyword">
|
||||
<field name="keyword">form_relate</field>
|
||||
<field name="model">lims.fraction,-1</field>
|
||||
<field name="action" ref="wiz_lims_fraction_results_report"/>
|
||||
</record>
|
||||
|
||||
<!-- Wizard Sample Results Report -->
|
||||
|
||||
<record model="ir.action.wizard" id="wiz_lims_sample_results_report">
|
||||
<field name="name">Sample Results Reports</field>
|
||||
<field name="wiz_name">lims.sample.results_report</field>
|
||||
</record>
|
||||
<record model="ir.action.keyword" id="lims_sample_results_report_keyword">
|
||||
<field name="keyword">form_relate</field>
|
||||
<field name="model">lims.sample,-1</field>
|
||||
<field name="action" ref="wiz_lims_sample_results_report"/>
|
||||
</record>
|
||||
|
||||
<!-- Wizard Results Report Sample -->
|
||||
|
||||
<record model="ir.action.wizard" id="wiz_lims_results_report_sample">
|
||||
<field name="name">Results Report Samples</field>
|
||||
<field name="wiz_name">lims.results_report.sample</field>
|
||||
</record>
|
||||
<record model="ir.action.keyword" id="lims_results_report_sample_keyword">
|
||||
<field name="keyword">form_relate</field>
|
||||
<field name="model">lims.results_report,-1</field>
|
||||
<field name="action" ref="wiz_lims_results_report_sample"/>
|
||||
</record>
|
||||
|
||||
<!-- Wizard Report Annulation -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_results_report_annulation_start_view_form">
|
||||
<field name="model">lims.results_report_annulation.start</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">results_report_annulation_form</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.wizard" id="wiz_lims_results_report_annulation">
|
||||
<field name="name">Report Annulation</field>
|
||||
<field name="wiz_name">lims.results_report_annulation</field>
|
||||
</record>
|
||||
|
||||
<!-- Results Report -->
|
||||
|
||||
<record model="ir.action.report" id="report_results_report">
|
||||
<field name="name">Results Report</field>
|
||||
<field name="model">lims.results_report.version.detail</field>
|
||||
<field name="report_name">lims.result_report</field>
|
||||
<field name="report">lims/report/results_report.odt</field>
|
||||
</record>
|
||||
<record model="ir.action.keyword" id="report_results_report_keyword">
|
||||
<field name="keyword">form_print</field>
|
||||
<field name="model">lims.results_report.version.detail,-1</field>
|
||||
<field name="action" ref="report_results_report"/>
|
||||
</record>
|
||||
|
||||
<!-- Transcription Results Report -->
|
||||
|
||||
<record model="ir.action.report" id="report_results_report_transcription">
|
||||
<field name="name">Transcription Results Report</field>
|
||||
<field name="model">lims.results_report.version.detail</field>
|
||||
<field name="report_name">lims.result_report.transcription</field>
|
||||
<field name="report">lims/report/results_report.odt</field>
|
||||
</record>
|
||||
<record model="ir.action.keyword" id="report_results_report_transcription_keyword">
|
||||
<field name="keyword">form_print</field>
|
||||
<field name="model">lims.results_report.version.detail,-1</field>
|
||||
<field name="action" ref="report_results_report_transcription"/>
|
||||
</record>
|
||||
|
||||
<!-- Global Results Report -->
|
||||
|
||||
<record model="ir.action.report" id="report_global_results_report">
|
||||
<field name="name">Global Results Report</field>
|
||||
<field name="model"></field>
|
||||
<field name="report_name">lims.global_result_report</field>
|
||||
<field name="report">lims/report/global_results_report.odt</field>
|
||||
</record>
|
||||
|
||||
<menuitem name="Results reports" parent="lims_laboratory"
|
||||
id="lims_laboratory_reports" sequence="30"
|
||||
icon="lims-laboratory_reports"/>
|
||||
<menuitem parent="lims_laboratory_reports" action="act_lims_results_report"
|
||||
id="lims_results_report_menu" sequence="10"
|
||||
icon="lims-laboratory_reports"/>
|
||||
<menuitem parent="lims_laboratory_reports" action="wiz_lims_generate_results_report"
|
||||
id="lims_generate_results_report_menu" sequence="20"
|
||||
icon="lims-generate_results_report"/>
|
||||
<menuitem parent="lims_laboratory_reports" action="act_lims_results_report_version_detail"
|
||||
id="lims_results_report_version_detail_menu" sequence="30"
|
||||
icon="lims-results_report_version_detail"/>
|
||||
|
||||
<record model="ir.model.access" id="access_results_report">
|
||||
<field name="model" search="[('model', '=', 'lims.results_report')]"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
<field name="perm_create" eval="False"/>
|
||||
<field name="perm_delete" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.access" id="access_results_report_group_laboratory_reports">
|
||||
<field name="model" search="[('model', '=', 'lims.results_report')]"/>
|
||||
<field name="group" ref="group_lims_laboratory_reports"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
<field name="perm_create" eval="True"/>
|
||||
<field name="perm_delete" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.access" id="access_results_report_version_detail">
|
||||
<field name="model" search="[('model', '=', 'lims.results_report.version.detail')]"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
<field name="perm_create" eval="False"/>
|
||||
<field name="perm_delete" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.access" id="access_results_report_version_detail_group_laboratory_reports">
|
||||
<field name="model" search="[('model', '=', 'lims.results_report.version.detail')]"/>
|
||||
<field name="group" ref="group_lims_laboratory_reports"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
<field name="perm_create" eval="True"/>
|
||||
<field name="perm_delete" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.button" id="results_report_version_detail_revise_button">
|
||||
<field name="name">revise</field>
|
||||
<field name="model" search="[('model', '=', 'lims.results_report.version.detail')]"/>
|
||||
</record>
|
||||
<record model="ir.model.button-res.group" id="results_report_version_detail_revise_button_group_lims_laboratory_reports">
|
||||
<field name="button" ref="results_report_version_detail_revise_button"/>
|
||||
<field name="group" ref="group_lims_laboratory_reports"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.button" id="results_report_version_detail_annul_button">
|
||||
<field name="name">annul</field>
|
||||
<field name="model" search="[('model', '=', 'lims.results_report.version.detail')]"/>
|
||||
</record>
|
||||
<record model="ir.model.button-res.group" id="results_report_version_detail_annul_button_group_lims_laboratory_reports">
|
||||
<field name="button" ref="results_report_version_detail_annul_button"/>
|
||||
<field name="group" ref="group_lims_laboratory_reports"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.button" id="results_report_version_detail_revise_all_lang_button">
|
||||
<field name="name">revise_all_lang</field>
|
||||
<field name="model" search="[('model', '=', 'lims.results_report.version.detail')]"/>
|
||||
</record>
|
||||
<record model="ir.model.button-res.group" id="results_report_version_detail_revise_all_lang_button_group_lims_laboratory_reports">
|
||||
<field name="button" ref="results_report_version_detail_revise_all_lang_button"/>
|
||||
<field name="group" ref="group_lims_laboratory_reports"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.menu-res.group" id="menu_lims_group_laboratory_reports_readonly">
|
||||
<field name="menu" ref="lims_menu"/>
|
||||
<field name="group" ref="group_lims_laboratory_reports_readonly"/>
|
||||
</record>
|
||||
<record model="ir.ui.menu-res.group" id="menu_lims_group_laboratory_reports">
|
||||
<field name="menu" ref="lims_menu"/>
|
||||
<field name="group" ref="group_lims_laboratory_reports"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.menu-res.group" id="menu_laboratory_group_laboratory_reports_readonly">
|
||||
<field name="menu" ref="lims_laboratory"/>
|
||||
<field name="group" ref="group_lims_laboratory_reports_readonly"/>
|
||||
</record>
|
||||
<record model="ir.ui.menu-res.group" id="menu_laboratory_group_laboratory_reports">
|
||||
<field name="menu" ref="lims_laboratory"/>
|
||||
<field name="group" ref="group_lims_laboratory_reports"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.menu-res.group" id="menu_laboratory_reports_group_laboratory_reports_readonly">
|
||||
<field name="menu" ref="lims_laboratory_reports"/>
|
||||
<field name="group" ref="group_lims_laboratory_reports_readonly"/>
|
||||
</record>
|
||||
<record model="ir.ui.menu-res.group" id="menu_laboratory_reports_group_laboratory_reports">
|
||||
<field name="menu" ref="lims_laboratory_reports"/>
|
||||
<field name="group" ref="group_lims_laboratory_reports"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.menu-res.group" id="menu_results_report_group_laboratory_reports_readonly">
|
||||
<field name="menu" ref="lims_results_report_menu"/>
|
||||
<field name="group" ref="group_lims_laboratory_reports_readonly"/>
|
||||
</record>
|
||||
<record model="ir.ui.menu-res.group" id="menu_results_report_group_laboratory_reports">
|
||||
<field name="menu" ref="lims_results_report_menu"/>
|
||||
<field name="group" ref="group_lims_laboratory_reports"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.menu-res.group" id="menu_generate_results_report_group_laboratory_reports">
|
||||
<field name="menu" ref="lims_generate_results_report_menu"/>
|
||||
<field name="group" ref="group_lims_laboratory_reports"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.menu-res.group" id="menu_results_report_version_detail_group_laboratory_reports_readonly">
|
||||
<field name="menu" ref="lims_results_report_version_detail_menu"/>
|
||||
<field name="group" ref="group_lims_laboratory_reports_readonly"/>
|
||||
</record>
|
||||
<record model="ir.ui.menu-res.group" id="menu_results_report_version_detail_group_laboratory_reports">
|
||||
<field name="menu" ref="lims_results_report_version_detail_menu"/>
|
||||
<field name="group" ref="group_lims_laboratory_reports"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.action-res.group"
|
||||
id="wiz_notebook_accept_lines-group_laboratory_results_acceptance">
|
||||
<field name="action" ref="wiz_lims_notebook_accept_lines"/>
|
||||
<field name="group" ref="group_lims_laboratory_results_acceptance"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.action-res.group"
|
||||
id="wiz_notebook_line_accept_lines-group_laboratory_results_acceptance">
|
||||
<field name="action" ref="wiz_lims_notebook_line_accept_lines"/>
|
||||
<field name="group" ref="group_lims_laboratory_results_acceptance"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.action-res.group"
|
||||
id="wiz_notebook_line_unaccept_lines-group_laboratory_results_acceptance">
|
||||
<field name="action" ref="wiz_lims_notebook_line_unaccept_lines"/>
|
||||
<field name="group" ref="group_lims_laboratory_results_acceptance"/>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</tryton>
|
|
@ -0,0 +1,974 @@
|
|||
<?xml version="1.0"?>
|
||||
<tryton>
|
||||
<data>
|
||||
|
||||
<!-- Sequences for Sample -->
|
||||
|
||||
<record model="ir.sequence.type" id="seq_type_sample">
|
||||
<field name="name">Sample</field>
|
||||
<field name="code">lims.sample</field>
|
||||
</record>
|
||||
<record model="ir.sequence.type-res.group"
|
||||
id="seq_type_sample_group_admin">
|
||||
<field name="sequence_type" ref="seq_type_sample"/>
|
||||
<field name="group" ref="res.group_admin"/>
|
||||
</record>
|
||||
<record model="ir.sequence" id="seq_sample">
|
||||
<field name="name">Sample</field>
|
||||
<field name="code">lims.sample</field>
|
||||
<field eval="7" name="padding"/>
|
||||
</record>
|
||||
|
||||
<!-- Sequences for Service -->
|
||||
|
||||
<record model="ir.sequence.type" id="seq_type_service">
|
||||
<field name="name">Service</field>
|
||||
<field name="code">lims.service</field>
|
||||
</record>
|
||||
<record model="ir.sequence.type-res.group"
|
||||
id="seq_type_service_group_admin">
|
||||
<field name="sequence_type" ref="seq_type_service"/>
|
||||
<field name="group" ref="res.group_admin"/>
|
||||
</record>
|
||||
<record model="ir.sequence" id="seq_service">
|
||||
<field name="name">Service</field>
|
||||
<field name="code">lims.service</field>
|
||||
<field eval="8" name="padding"/>
|
||||
</record>
|
||||
|
||||
<!-- Packaging Type -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_packaging_type_view_form">
|
||||
<field name="model">lims.packaging.type</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">packaging_type_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_packaging_type_view_list">
|
||||
<field name="model">lims.packaging.type</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">packaging_type_list</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.act_window" id="act_lims_packaging_type_list">
|
||||
<field name="name">Packaging Types</field>
|
||||
<field name="res_model">lims.packaging.type</field>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_lims_packaging_type_view_list">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="lims_packaging_type_view_list"/>
|
||||
<field name="act_window" ref="act_lims_packaging_type_list"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_lims_packaging_type_view_form">
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="view" ref="lims_packaging_type_view_form"/>
|
||||
<field name="act_window" ref="act_lims_packaging_type_list"/>
|
||||
</record>
|
||||
|
||||
<!-- Fraction Type -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_fraction_type_view_form">
|
||||
<field name="model">lims.fraction.type</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">fraction_type_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_fraction_type_view_list">
|
||||
<field name="model">lims.fraction.type</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">fraction_type_list</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.act_window" id="act_lims_fraction_type_list">
|
||||
<field name="name">Fraction Types</field>
|
||||
<field name="res_model">lims.fraction.type</field>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_lims_fraction_type_view_list">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="lims_fraction_type_view_list"/>
|
||||
<field name="act_window" ref="act_lims_fraction_type_list"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_lims_fraction_type_view_form">
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="view" ref="lims_fraction_type_view_form"/>
|
||||
<field name="act_window" ref="act_lims_fraction_type_list"/>
|
||||
</record>
|
||||
|
||||
<!-- Service -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_service_view_form">
|
||||
<field name="model">lims.service</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">service_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_service_view_list">
|
||||
<field name="model">lims.service</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">service_list</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_service2_view_list">
|
||||
<field name="model">lims.service</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">service2_list</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.act_window" id="act_lims_service_list">
|
||||
<field name="name">Services</field>
|
||||
<field name="res_model">lims.service</field>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_lims_service_view_list">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="lims_service_view_list"/>
|
||||
<field name="act_window" ref="act_lims_service_list"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_lims_service_view_form">
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="view" ref="lims_service_view_form"/>
|
||||
<field name="act_window" ref="act_lims_service_list"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.field.access" id="access_lims_service_analysis_detail">
|
||||
<field name="field"
|
||||
search="[('name', '=', 'analysis_detail'), ('model.model', '=', 'lims.service')]"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
<field name="perm_create" eval="False"/>
|
||||
<field name="perm_delete" eval="False"/>
|
||||
</record>
|
||||
|
||||
<!-- Fraction -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_fraction_view_form">
|
||||
<field name="model">lims.fraction</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">fraction_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_fraction_view_list">
|
||||
<field name="model">lims.fraction</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">fraction_list</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.act_window" id="act_lims_fraction_list">
|
||||
<field name="name">Fractions</field>
|
||||
<field name="res_model">lims.fraction</field>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_lims_fraction_view_list">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="lims_fraction_view_list"/>
|
||||
<field name="act_window" ref="act_lims_fraction_list"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_lims_fraction_view_form">
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="view" ref="lims_fraction_view_form"/>
|
||||
<field name="act_window" ref="act_lims_fraction_list"/>
|
||||
</record>
|
||||
|
||||
<!-- Sample -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_sample_view_form">
|
||||
<field name="model">lims.sample</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">sample_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_sample_view_list">
|
||||
<field name="model">lims.sample</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">sample_list</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.act_window" id="act_lims_sample_list">
|
||||
<field name="name">Samples</field>
|
||||
<field name="res_model">lims.sample</field>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_lims_sample_view_list">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="lims_sample_view_list"/>
|
||||
<field name="act_window" ref="act_lims_sample_list"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_lims_sample_view_form">
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="view" ref="lims_sample_view_form"/>
|
||||
<field name="act_window" ref="act_lims_sample_list"/>
|
||||
</record>
|
||||
|
||||
<!-- Zone -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_zone_view_form">
|
||||
<field name="model">lims.zone</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">zone_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_zone_view_list">
|
||||
<field name="model">lims.zone</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">zone_list</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.act_window" id="act_lims_zone_list">
|
||||
<field name="name">Zones/Regions</field>
|
||||
<field name="res_model">lims.zone</field>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_lims_zone_view_list">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="lims_zone_view_list"/>
|
||||
<field name="act_window" ref="act_lims_zone_list"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_lims_zone_view_form">
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="view" ref="lims_zone_view_form"/>
|
||||
<field name="act_window" ref="act_lims_zone_list"/>
|
||||
</record>
|
||||
|
||||
<!-- Variety -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_variety_view_form">
|
||||
<field name="model">lims.variety</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">variety_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_variety_view_list">
|
||||
<field name="model">lims.variety</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">variety_list</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.act_window" id="act_lims_variety_list">
|
||||
<field name="name">Varieties</field>
|
||||
<field name="res_model">lims.variety</field>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_lims_variety_view_list">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="lims_variety_view_list"/>
|
||||
<field name="act_window" ref="act_lims_variety_list"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_lims_variety_view_form">
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="view" ref="lims_variety_view_form"/>
|
||||
<field name="act_window" ref="act_lims_variety_list"/>
|
||||
</record>
|
||||
|
||||
<!-- Matrix Variety -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_matrix_variety_view_form">
|
||||
<field name="model">lims.matrix.variety</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">matrix_variety_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_matrix_variety_view_list">
|
||||
<field name="model">lims.matrix.variety</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">matrix_variety_list</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.act_window" id="act_lims_matrix_variety_list">
|
||||
<field name="name">Product Type - Matrix - Variety</field>
|
||||
<field name="res_model">lims.matrix.variety</field>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_lims_matrix_variety_view_list">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="lims_matrix_variety_view_list"/>
|
||||
<field name="act_window" ref="act_lims_matrix_variety_list"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_lims_matrix_variety_view_form">
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="view" ref="lims_matrix_variety_view_form"/>
|
||||
<field name="act_window" ref="act_lims_matrix_variety_list"/>
|
||||
</record>
|
||||
|
||||
<!-- Packaging Integrity -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_packaging_integrity_view_form">
|
||||
<field name="model">lims.packaging.integrity</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">packaging_integrity_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_packaging_integrity_view_list">
|
||||
<field name="model">lims.packaging.integrity</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">packaging_integrity_list</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.act_window" id="act_lims_packaging_integrity_list">
|
||||
<field name="name">Packaging Integrities</field>
|
||||
<field name="res_model">lims.packaging.integrity</field>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_lims_packaging_integrity_view_list">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="lims_packaging_integrity_view_list"/>
|
||||
<field name="act_window" ref="act_lims_packaging_integrity_list"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_lims_packaging_integrity_view_form">
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="view" ref="lims_packaging_integrity_view_form"/>
|
||||
<field name="act_window" ref="act_lims_packaging_integrity_list"/>
|
||||
</record>
|
||||
|
||||
<!-- Sample actions related -->
|
||||
|
||||
<record model="ir.action.act_window" id="act_lims_fraction_related2">
|
||||
<field name="name">1. Fractions</field>
|
||||
<field name="res_model">lims.fraction</field>
|
||||
<field name="domain" eval="[('sample', 'in', Eval('active_ids'))]" pyson="1"/>
|
||||
</record>
|
||||
<record model="ir.action.keyword" id="act_open_fraction_keyword2">
|
||||
<field name="keyword">form_relate</field>
|
||||
<field name="model">lims.sample,-1</field>
|
||||
<field name="action" ref="act_lims_fraction_related2"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.act_window" id="act_lims_service_related2">
|
||||
<field name="name">2. Services</field>
|
||||
<field name="res_model">lims.service</field>
|
||||
<field name="domain" eval="[('sample', 'in', Eval('active_ids'))]" pyson="1"/>
|
||||
</record>
|
||||
<record model="ir.action.keyword" id="act_open_service_keyword2">
|
||||
<field name="keyword">form_relate</field>
|
||||
<field name="model">lims.sample,-1</field>
|
||||
<field name="action" ref="act_lims_service_related2"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.act_window" id="act_lims_entry_detail_analysis_related2">
|
||||
<field name="name">3. Entry Detail Analysis</field>
|
||||
<field name="res_model">lims.entry.detail.analysis</field>
|
||||
<field name="domain" eval="[('sample', 'in', Eval('active_ids'))]" pyson="1"/>
|
||||
</record>
|
||||
<record model="ir.action.keyword" id="act_open_entry_detail_analysis_keyword2">
|
||||
<field name="keyword">form_relate</field>
|
||||
<field name="model">lims.sample,-1</field>
|
||||
<field name="action" ref="act_lims_entry_detail_analysis_related2"/>
|
||||
</record>
|
||||
|
||||
<!-- Fraction actions related -->
|
||||
|
||||
<record model="ir.action.act_window" id="act_lims_service_related3">
|
||||
<field name="name">1. Services</field>
|
||||
<field name="res_model">lims.service</field>
|
||||
<field name="domain" eval="[('fraction', 'in', Eval('active_ids'))]" pyson="1"/>
|
||||
</record>
|
||||
<record model="ir.action.keyword" id="act_open_service_keyword3">
|
||||
<field name="keyword">form_relate</field>
|
||||
<field name="model">lims.fraction,-1</field>
|
||||
<field name="action" ref="act_lims_service_related3"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.act_window" id="act_lims_entry_detail_analysis_related3">
|
||||
<field name="name">2. Entry Detail Analysis</field>
|
||||
<field name="res_model">lims.entry.detail.analysis</field>
|
||||
<field name="domain" eval="[('fraction', 'in', Eval('active_ids'))]" pyson="1"/>
|
||||
</record>
|
||||
<record model="ir.action.keyword" id="act_open_entry_detail_analysis_keyword3">
|
||||
<field name="keyword">form_relate</field>
|
||||
<field name="model">lims.fraction,-1</field>
|
||||
<field name="action" ref="act_lims_entry_detail_analysis_related3"/>
|
||||
</record>
|
||||
|
||||
<!-- Service actions related -->
|
||||
|
||||
<record model="ir.action.act_window" id="act_lims_entry_detail_analysis_related4">
|
||||
<field name="name">1. Entry Detail Analysis</field>
|
||||
<field name="res_model">lims.entry.detail.analysis</field>
|
||||
<field name="domain" eval="[('service', 'in', Eval('active_ids'))]" pyson="1"/>
|
||||
</record>
|
||||
<record model="ir.action.keyword" id="act_open_entry_detail_analysis_keyword4">
|
||||
<field name="keyword">form_relate</field>
|
||||
<field name="model">lims.service,-1</field>
|
||||
<field name="action" ref="act_lims_entry_detail_analysis_related4"/>
|
||||
</record>
|
||||
|
||||
<!-- Wizard Copy Sample -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_duplicate_sample_start_view_form">
|
||||
<field name="model">lims.sample.duplicate.start</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">sample_duplicate_form</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.wizard" id="wiz_lims_duplicate_sample">
|
||||
<field name="name">Copy Sample</field>
|
||||
<field name="wiz_name">lims.sample.duplicate</field>
|
||||
</record>
|
||||
<record model="ir.action.keyword" id="lims_duplicate_sample_keyword">
|
||||
<field name="keyword">form_action</field>
|
||||
<field name="model">lims.sample,-1</field>
|
||||
<field name="action" ref="wiz_lims_duplicate_sample"/>
|
||||
</record>
|
||||
|
||||
<!-- Wizard Copy Sample From Entry -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_duplicate_sample_from_entry_start_view_form">
|
||||
<field name="model">lims.entry.duplicate_sample.start</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">entry_duplicate_sample_form</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.wizard" id="wiz_lims_duplicate_sample_from_entry">
|
||||
<field name="name">Copy Sample</field>
|
||||
<field name="wiz_name">lims.entry.duplicate_sample</field>
|
||||
</record>
|
||||
<record model="ir.action.keyword" id="lims_duplicate_sample_from_entry_keyword">
|
||||
<field name="keyword">form_action</field>
|
||||
<field name="model">lims.entry,-1</field>
|
||||
<field name="action" ref="wiz_lims_duplicate_sample_from_entry"/>
|
||||
</record>
|
||||
|
||||
<!-- Wizard Manage Services -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_manage_services_view_form">
|
||||
<field name="model">lims.fraction</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">fraction_manage_services_form</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.wizard" id="wiz_lims_manage_services">
|
||||
<field name="name">Manage Services</field>
|
||||
<field name="wiz_name">lims.manage_services</field>
|
||||
</record>
|
||||
|
||||
<!-- Wizard Complete Services -->
|
||||
|
||||
<record model="ir.action.wizard" id="wiz_lims_complete_services">
|
||||
<field name="name">Complete Services</field>
|
||||
<field name="wiz_name">lims.complete_services</field>
|
||||
</record>
|
||||
|
||||
<!-- Fractions by Locations -->
|
||||
|
||||
<record model="ir.action.act_window" id="act_lims_fractions_by_locations">
|
||||
<field name="name">Fractions</field>
|
||||
<field name="res_model">lims.fraction</field>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_lims_fractions_by_locations_view_list">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="lims_fraction_view_list"/>
|
||||
<field name="act_window" ref="act_lims_fractions_by_locations"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_lims_fractions_by_locations_view_form">
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="view" ref="lims_fraction_view_form"/>
|
||||
<field name="act_window" ref="act_lims_fractions_by_locations"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="fractions_by_locations_start_view_form">
|
||||
<field name="model">lims.fractions_by_locations.start</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">fractions_by_locations_start_form</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.wizard" id="wizard_fractions_by_locations">
|
||||
<field name="name">Fractions by Locations</field>
|
||||
<field name="wiz_name">lims.fractions_by_locations</field>
|
||||
</record>
|
||||
|
||||
<!-- Wizard Countersamples Storage -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_countersample_storage_start_view_form">
|
||||
<field name="model">lims.countersample.storage.start</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">countersample_storage_start_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_countersample_storage_empty_view_form">
|
||||
<field name="model">lims.countersample.storage.empty</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">countersample_storage_empty_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_countersample_storage_result_view_form">
|
||||
<field name="model">lims.countersample.storage.result</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">countersample_storage_result_form</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.wizard" id="wiz_lims_countersample_storage">
|
||||
<field name="name">Countersamples Storage</field>
|
||||
<field name="wiz_name">lims.countersample.storage</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.keyword" id="lims_countersample_storage_keyword">
|
||||
<field name="keyword">form_action</field>
|
||||
<field name="model">lims.fraction,-1</field>
|
||||
<field name="action" ref="wiz_lims_countersample_storage"/>
|
||||
</record>
|
||||
|
||||
<!-- Wizard Revert Countersamples Storage -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_countersample_storage_revert_start_view_form">
|
||||
<field name="model">lims.countersample.storage_revert.start</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">countersample_storage_revert_start_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_countersample_storage_revert_empty_view_form">
|
||||
<field name="model">lims.countersample.storage_revert.empty</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">countersample_storage_revert_empty_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_countersample_storage_revert_result_view_form">
|
||||
<field name="model">lims.countersample.storage_revert.result</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">countersample_storage_revert_result_form</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.wizard" id="wiz_lims_countersample_storage_revert">
|
||||
<field name="name">Revert Countersamples Storage</field>
|
||||
<field name="wiz_name">lims.countersample.storage_revert</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.keyword" id="lims_countersample_storage_revert_keyword">
|
||||
<field name="keyword">form_action</field>
|
||||
<field name="model">lims.fraction,-1</field>
|
||||
<field name="action" ref="wiz_lims_countersample_storage_revert"/>
|
||||
</record>
|
||||
|
||||
<!-- Wizard Countersamples Discharge -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_countersample_discharge_start_view_form">
|
||||
<field name="model">lims.countersample.discharge.start</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">countersample_discharge_start_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_countersample_discharge_empty_view_form">
|
||||
<field name="model">lims.countersample.discharge.empty</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">countersample_discharge_empty_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_countersample_discharge_result_view_form">
|
||||
<field name="model">lims.countersample.discharge.result</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">countersample_discharge_result_form</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.wizard" id="wiz_lims_countersample_discharge">
|
||||
<field name="name">Countersamples Discharge</field>
|
||||
<field name="wiz_name">lims.countersample.discharge</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.keyword" id="lims_countersample_discharge_keyword">
|
||||
<field name="keyword">form_action</field>
|
||||
<field name="model">lims.fraction,-1</field>
|
||||
<field name="action" ref="wiz_lims_countersample_discharge"/>
|
||||
</record>
|
||||
|
||||
<!-- Wizard Fractions Discharge -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_fraction_discharge_start_view_form">
|
||||
<field name="model">lims.fraction.discharge.start</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">fraction_discharge_start_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_fraction_discharge_empty_view_form">
|
||||
<field name="model">lims.fraction.discharge.empty</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">fraction_discharge_empty_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_fraction_discharge_result_view_form">
|
||||
<field name="model">lims.fraction.discharge.result</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">fraction_discharge_result_form</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.wizard" id="wiz_lims_fraction_discharge">
|
||||
<field name="name">Fractions Discharge</field>
|
||||
<field name="wiz_name">lims.fraction.discharge</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.keyword" id="lims_fraction_discharge_keyword">
|
||||
<field name="keyword">form_action</field>
|
||||
<field name="model">lims.fraction,-1</field>
|
||||
<field name="action" ref="wiz_lims_fraction_discharge"/>
|
||||
</record>
|
||||
|
||||
<!-- Wizard Revert Fractions Discharge -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_fraction_discharge_revert_start_view_form">
|
||||
<field name="model">lims.fraction.discharge_revert.start</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">fraction_discharge_revert_start_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_fraction_discharge_revert_empty_view_form">
|
||||
<field name="model">lims.fraction.discharge_revert.empty</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">fraction_discharge_revert_empty_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_fraction_discharge_revert_result_view_form">
|
||||
<field name="model">lims.fraction.discharge_revert.result</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">fraction_discharge_revert_result_form</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.wizard" id="wiz_lims_fraction_discharge_revert">
|
||||
<field name="name">Revert Fractions Discharge</field>
|
||||
<field name="wiz_name">lims.fraction.discharge_revert</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.keyword" id="lims_fraction_discharge_revert_keyword">
|
||||
<field name="keyword">form_action</field>
|
||||
<field name="model">lims.fraction,-1</field>
|
||||
<field name="action" ref="wiz_lims_fraction_discharge_revert"/>
|
||||
</record>
|
||||
|
||||
<!-- Wizard Create Sample -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_create_sample_start_view_form">
|
||||
<field name="model">lims.create_sample.start</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">create_sample_start_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_create_sample_service_view_list">
|
||||
<field name="model">lims.create_sample.service</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">create_sample_service_list</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_create_sample_service_view_form">
|
||||
<field name="model">lims.create_sample.service</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">create_sample_service_form</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.wizard" id="wiz_lims_create_sample">
|
||||
<field name="name">Enter Samples</field>
|
||||
<field name="wiz_name">lims.create_sample</field>
|
||||
</record>
|
||||
|
||||
<!-- Sample Labels Printer -->
|
||||
|
||||
<record model="ir.action.wizard" id="wiz_report_sample_labels_printer">
|
||||
<field name="name">Sample Labels Printer</field>
|
||||
<field name="wiz_name">lims.sample.labels.printer.report</field>
|
||||
<field name="model">lims.sample</field>
|
||||
</record>
|
||||
<record model="ir.action.keyword"
|
||||
id="wiz_report_sample_labels_printer_keyword">
|
||||
<field name="keyword">form_print</field>
|
||||
<field name="model">lims.sample,-1</field>
|
||||
<field name="action" ref="wiz_report_sample_labels_printer"/>
|
||||
</record>
|
||||
|
||||
<!-- Countersamples Storage Report -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_countersample_storage_print_start_view_form">
|
||||
<field name="model">lims.countersample.storage.print.start</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">countersample_storage_print_start_form</field>
|
||||
</record>
|
||||
<record model="ir.action.wizard" id="wiz_lims_countersample_storage_print">
|
||||
<field name="name">Countersamples Storage Report</field>
|
||||
<field name="wiz_name">lims.countersample.storage.print</field>
|
||||
</record>
|
||||
<record model="ir.action.report" id="report_countersample_storage">
|
||||
<field name="name">Countersamples Storage Report</field>
|
||||
<!-- <field name="model">lims.fraction</field> -->
|
||||
<field name="report_name">lims.countersample.storage.report</field>
|
||||
<field name="report">lims/report/countersample_storage_report.odt</field>
|
||||
</record>
|
||||
<record model="ir.action.keyword" id="lims_countersample_storage_print_keyword">
|
||||
<field name="keyword">form_print</field>
|
||||
<field name="model">lims.fraction,-1</field>
|
||||
<field name="action" ref="wiz_lims_countersample_storage_print"/>
|
||||
</record>
|
||||
|
||||
<!-- Countersamples Discharge Report -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_countersample_discharge_print_start_view_form">
|
||||
<field name="model">lims.countersample.discharge.print.start</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">countersample_discharge_print_start_form</field>
|
||||
</record>
|
||||
<record model="ir.action.wizard" id="wiz_lims_countersample_discharge_print">
|
||||
<field name="name">Countersamples Discharge Report</field>
|
||||
<field name="wiz_name">lims.countersample.discharge.print</field>
|
||||
</record>
|
||||
<record model="ir.action.report" id="report_countersample_discharge">
|
||||
<field name="name">Countersamples Discharge Report</field>
|
||||
<!-- <field name="model">lims.fraction</field> -->
|
||||
<field name="report_name">lims.countersample.discharge.report</field>
|
||||
<field name="report">lims/report/countersample_discharge_report.odt</field>
|
||||
</record>
|
||||
<record model="ir.action.keyword" id="lims_countersample_discharge_print_keyword">
|
||||
<field name="keyword">form_print</field>
|
||||
<field name="model">lims.fraction,-1</field>
|
||||
<field name="action" ref="wiz_lims_countersample_discharge_print"/>
|
||||
</record>
|
||||
|
||||
<menuitem parent="lims_config_base_tables" action="act_lims_fraction_type_list"
|
||||
id="lims_fraction_type_menu" sequence="70"/>
|
||||
|
||||
<menuitem parent="lims_config_entry" action="act_lims_packaging_type_list"
|
||||
id="lims_packaging_type_menu" sequence="10"/>
|
||||
<menuitem parent="lims_config_entry" action="act_lims_packaging_integrity_list"
|
||||
id="lims_packaging_integrity_menu" sequence="20"/>
|
||||
<menuitem parent="lims_config_entry" action="act_lims_variety_list"
|
||||
id="lims_variety_menu" sequence="30"/>
|
||||
<menuitem parent="lims_config_entry" action="act_lims_zone_list"
|
||||
id="lims_zone_menu" sequence="40"/>
|
||||
|
||||
<menuitem parent="lims_entry_board_menu" action="act_lims_sample_list"
|
||||
id="lims_sample_menu" sequence="30"/>
|
||||
<menuitem parent="lims_entry_board_menu" action="act_lims_fraction_list"
|
||||
id="lims_fraction_menu" sequence="40"/>
|
||||
<menuitem parent="lims_fraction_menu" action="wizard_fractions_by_locations"
|
||||
id="lims_fractions_by_locations_menu" sequence="10"/>
|
||||
<menuitem parent="lims_entry_board_menu" action="act_lims_service_list"
|
||||
id="lims_service_menu" sequence="50"/>
|
||||
<menuitem parent="lims_entry_board_menu" action="act_lims_entry_detail_analysis_list"
|
||||
id="lims_entry_detail_analysis_menu" sequence="60"/>
|
||||
|
||||
<record model="ir.model.access" id="access_packaging_type">
|
||||
<field name="model" search="[('model', '=', 'lims.packaging.type')]"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
<field name="perm_create" eval="False"/>
|
||||
<field name="perm_delete" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.access" id="access_packaging_type_group_conf_entry_admin">
|
||||
<field name="model" search="[('model', '=', 'lims.packaging.type')]"/>
|
||||
<field name="group" ref="group_lims_conf_entry_admin"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
<field name="perm_create" eval="True"/>
|
||||
<field name="perm_delete" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.access" id="access_packaging_integrity">
|
||||
<field name="model" search="[('model', '=', 'lims.packaging.integrity')]"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
<field name="perm_create" eval="False"/>
|
||||
<field name="perm_delete" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.access" id="access_packaging_integrity_group_conf_entry_admin">
|
||||
<field name="model" search="[('model', '=', 'lims.packaging.integrity')]"/>
|
||||
<field name="group" ref="group_lims_conf_entry_admin"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
<field name="perm_create" eval="True"/>
|
||||
<field name="perm_delete" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.access" id="access_variety">
|
||||
<field name="model" search="[('model', '=', 'lims.variety')]"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
<field name="perm_create" eval="False"/>
|
||||
<field name="perm_delete" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.access" id="access_variety_group_conf_entry_admin">
|
||||
<field name="model" search="[('model', '=', 'lims.variety')]"/>
|
||||
<field name="group" ref="group_lims_conf_entry_admin"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
<field name="perm_create" eval="True"/>
|
||||
<field name="perm_delete" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.access" id="access_zone">
|
||||
<field name="model" search="[('model', '=', 'lims.zone')]"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
<field name="perm_create" eval="False"/>
|
||||
<field name="perm_delete" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.access" id="access_zone_group_conf_entry_admin">
|
||||
<field name="model" search="[('model', '=', 'lims.zone')]"/>
|
||||
<field name="group" ref="group_lims_conf_entry_admin"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
<field name="perm_create" eval="True"/>
|
||||
<field name="perm_delete" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.access" id="access_fraction_type">
|
||||
<field name="model" search="[('model', '=', 'lims.fraction.type')]"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
<field name="perm_create" eval="False"/>
|
||||
<field name="perm_delete" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.access" id="access_fraction_type_group_conf_base_tables_admin">
|
||||
<field name="model" search="[('model', '=', 'lims.fraction.type')]"/>
|
||||
<field name="group" ref="group_lims_conf_base_tables_admin"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
<field name="perm_create" eval="True"/>
|
||||
<field name="perm_delete" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.access" id="access_sample">
|
||||
<field name="model" search="[('model', '=', 'lims.sample')]"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
<field name="perm_create" eval="False"/>
|
||||
<field name="perm_delete" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.access" id="access_sample_group_entry_update">
|
||||
<field name="model" search="[('model', '=', 'lims.sample')]"/>
|
||||
<field name="group" ref="group_lims_entry_update"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
<field name="perm_create" eval="False"/>
|
||||
<field name="perm_delete" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.access" id="access_sample_group_entry">
|
||||
<field name="model" search="[('model', '=', 'lims.sample')]"/>
|
||||
<field name="group" ref="group_lims_entry"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
<field name="perm_create" eval="True"/>
|
||||
<field name="perm_delete" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.access" id="access_fraction">
|
||||
<field name="model" search="[('model', '=', 'lims.fraction')]"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
<field name="perm_create" eval="False"/>
|
||||
<field name="perm_delete" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.access" id="access_fraction_group_entry_update">
|
||||
<field name="model" search="[('model', '=', 'lims.fraction')]"/>
|
||||
<field name="group" ref="group_lims_entry_update"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
<field name="perm_create" eval="False"/>
|
||||
<field name="perm_delete" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.access" id="access_fraction_group_entry">
|
||||
<field name="model" search="[('model', '=', 'lims.fraction')]"/>
|
||||
<field name="group" ref="group_lims_entry"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
<field name="perm_create" eval="True"/>
|
||||
<field name="perm_delete" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.access" id="access_service">
|
||||
<field name="model" search="[('model', '=', 'lims.service')]"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
<field name="perm_create" eval="False"/>
|
||||
<field name="perm_delete" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.access" id="access_service_group_entry_update">
|
||||
<field name="model" search="[('model', '=', 'lims.service')]"/>
|
||||
<field name="group" ref="group_lims_entry_update"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
<field name="perm_create" eval="False"/>
|
||||
<field name="perm_delete" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.access" id="access_service_group_entry">
|
||||
<field name="model" search="[('model', '=', 'lims.service')]"/>
|
||||
<field name="group" ref="group_lims_entry"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
<field name="perm_create" eval="True"/>
|
||||
<field name="perm_delete" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.menu-res.group" id="menu_sample_group_entry_readonly">
|
||||
<field name="menu" ref="lims_sample_menu"/>
|
||||
<field name="group" ref="group_lims_entry_readonly"/>
|
||||
</record>
|
||||
<record model="ir.ui.menu-res.group" id="menu_sample_group_entry_update">
|
||||
<field name="menu" ref="lims_sample_menu"/>
|
||||
<field name="group" ref="group_lims_entry_update"/>
|
||||
</record>
|
||||
<record model="ir.ui.menu-res.group" id="menu_sample_group_entry">
|
||||
<field name="menu" ref="lims_sample_menu"/>
|
||||
<field name="group" ref="group_lims_entry"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.menu-res.group" id="menu_fraction_group_entry_readonly">
|
||||
<field name="menu" ref="lims_fraction_menu"/>
|
||||
<field name="group" ref="group_lims_entry_readonly"/>
|
||||
</record>
|
||||
<record model="ir.ui.menu-res.group" id="menu_fraction_group_entry_update">
|
||||
<field name="menu" ref="lims_fraction_menu"/>
|
||||
<field name="group" ref="group_lims_entry_update"/>
|
||||
</record>
|
||||
<record model="ir.ui.menu-res.group" id="menu_fraction_group_entry">
|
||||
<field name="menu" ref="lims_fraction_menu"/>
|
||||
<field name="group" ref="group_lims_entry"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.menu-res.group" id="menu_fractions_by_locations_group_entry_readonly">
|
||||
<field name="menu" ref="lims_fractions_by_locations_menu"/>
|
||||
<field name="group" ref="group_lims_entry_readonly"/>
|
||||
</record>
|
||||
<record model="ir.ui.menu-res.group" id="menu_fractions_by_locations_group_entry">
|
||||
<field name="menu" ref="lims_fractions_by_locations_menu"/>
|
||||
<field name="group" ref="group_lims_entry"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.menu-res.group" id="menu_service_group_entry_readonly">
|
||||
<field name="menu" ref="lims_service_menu"/>
|
||||
<field name="group" ref="group_lims_entry_readonly"/>
|
||||
</record>
|
||||
<record model="ir.ui.menu-res.group" id="menu_service_group_entry_update">
|
||||
<field name="menu" ref="lims_service_menu"/>
|
||||
<field name="group" ref="group_lims_entry_update"/>
|
||||
</record>
|
||||
<record model="ir.ui.menu-res.group" id="menu_service_group_entry">
|
||||
<field name="menu" ref="lims_service_menu"/>
|
||||
<field name="group" ref="group_lims_entry"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.menu-res.group" id="menu_entry_detail_analysis_group_entry_readonly">
|
||||
<field name="menu" ref="lims_entry_detail_analysis_menu"/>
|
||||
<field name="group" ref="group_lims_entry_readonly"/>
|
||||
</record>
|
||||
<record model="ir.ui.menu-res.group" id="menu_entry_detail_analysis_group_entry_update">
|
||||
<field name="menu" ref="lims_entry_detail_analysis_menu"/>
|
||||
<field name="group" ref="group_lims_entry_update"/>
|
||||
</record>
|
||||
<record model="ir.ui.menu-res.group" id="menu_entry_detail_analysis_group_entry">
|
||||
<field name="menu" ref="lims_entry_detail_analysis_menu"/>
|
||||
<field name="group" ref="group_lims_entry"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.button" id="fraction_load_services_button">
|
||||
<field name="name">load_services</field>
|
||||
<field name="model" search="[('model', '=', 'lims.fraction')]"/>
|
||||
</record>
|
||||
<record model="ir.model.button-res.group" id="fraction_load_services_button_group_blind_sample">
|
||||
<field name="button" ref="fraction_load_services_button"/>
|
||||
<field name="group" ref="group_lims_blind_sample"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.button" id="fraction_manage_services_button">
|
||||
<field name="name">manage_services</field>
|
||||
<field name="model" search="[('model', '=', 'lims.fraction')]"/>
|
||||
</record>
|
||||
<record model="ir.model.button-res.group" id="fraction_manage_services_button_group_lims_entry">
|
||||
<field name="button" ref="fraction_manage_services_button"/>
|
||||
<field name="group" ref="group_lims_entry"/>
|
||||
</record>
|
||||
<record model="ir.model.button-res.group" id="fraction_manage_services_button_group_lims_entry_update">
|
||||
<field name="button" ref="fraction_manage_services_button"/>
|
||||
<field name="group" ref="group_lims_entry_update"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.button" id="fraction_complete_services_button">
|
||||
<field name="name">complete_services</field>
|
||||
<field name="model" search="[('model', '=', 'lims.fraction')]"/>
|
||||
</record>
|
||||
<record model="ir.model.button-res.group" id="fraction_complete_services_button_group_lims_entry">
|
||||
<field name="button" ref="fraction_complete_services_button"/>
|
||||
<field name="group" ref="group_lims_entry"/>
|
||||
</record>
|
||||
<record model="ir.model.button-res.group" id="fraction_complete_services_button_group_lims_entry_update">
|
||||
<field name="button" ref="fraction_complete_services_button"/>
|
||||
<field name="group" ref="group_lims_entry_update"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.button" id="fraction_confirm_button">
|
||||
<field name="name">confirm</field>
|
||||
<field name="model" search="[('model', '=', 'lims.fraction')]"/>
|
||||
</record>
|
||||
<record model="ir.model.button-res.group" id="fraction_confirm_button_group_lims_entry">
|
||||
<field name="button" ref="fraction_confirm_button"/>
|
||||
<field name="group" ref="group_lims_entry"/>
|
||||
</record>
|
||||
<record model="ir.model.button-res.group" id="fraction_confirm_button_group_lims_entry_update">
|
||||
<field name="button" ref="fraction_confirm_button"/>
|
||||
<field name="group" ref="group_lims_entry_update"/>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</tryton>
|
|
@ -4,11 +4,11 @@
|
|||
# the full copyright notices and license terms.
|
||||
|
||||
from trytond.model import fields
|
||||
from trytond.pyson import In, Eval, Bool
|
||||
from trytond.pyson import In, Eval, Bool, If
|
||||
from trytond.pool import Pool, PoolMeta
|
||||
from trytond.transaction import Transaction
|
||||
|
||||
__all__ = ['Location', 'Move', 'ShipmentInternal', 'InventoryLine']
|
||||
__all__ = ['Location', 'Move', 'ShipmentInternal']
|
||||
|
||||
|
||||
class Location:
|
||||
|
@ -35,11 +35,12 @@ class Move:
|
|||
|
||||
fraction = fields.Many2One('lims.fraction', 'Fraction', select=True,
|
||||
ondelete='CASCADE', states={
|
||||
'readonly': (In(Eval('state'), ['cancel', 'assigned', 'done'])
|
||||
| Bool(Eval('fraction_readonly')))},
|
||||
domain=['OR',
|
||||
('current_location', '=', Eval('from_location')),
|
||||
('id', '=', Eval('fraction')),
|
||||
'readonly': (In(Eval('state'), ['cancel', 'assigned', 'done']) |
|
||||
Bool(Eval('fraction_readonly')))},
|
||||
domain=[
|
||||
If(~Eval('fraction'),
|
||||
('current_location', '=', Eval('from_location')),
|
||||
('id', '=', Eval('fraction'))),
|
||||
],
|
||||
depends=['state', 'fraction_readonly', 'from_location'])
|
||||
fraction_readonly = fields.Function(fields.Boolean('Fraction Read Only'),
|
||||
|
@ -65,9 +66,9 @@ class Move:
|
|||
return True
|
||||
if not self.product or self.product != config.fraction_product:
|
||||
return True
|
||||
if (self.from_location and self.to_location
|
||||
and self.from_location.type == 'storage'
|
||||
and self.to_location.type == 'storage'):
|
||||
if (self.from_location and self.to_location and
|
||||
self.from_location.type == 'storage' and
|
||||
self.to_location.type == 'storage'):
|
||||
return False
|
||||
return True
|
||||
|
||||
|
@ -87,6 +88,16 @@ class ShipmentInternal:
|
|||
return super(ShipmentInternal, cls).copy(shipments,
|
||||
default=default)
|
||||
|
||||
@classmethod
|
||||
def _sync_moves(cls, shipments):
|
||||
with Transaction().set_context(check_current_location=False):
|
||||
super(ShipmentInternal, cls)._sync_moves(shipments)
|
||||
|
||||
@classmethod
|
||||
def _set_transit(cls, shipments):
|
||||
with Transaction().set_context(check_current_location=False):
|
||||
super(ShipmentInternal, cls)._set_transit(shipments)
|
||||
|
||||
@classmethod
|
||||
def draft(cls, shipments):
|
||||
with Transaction().set_context(check_current_location=False):
|
||||
|
@ -97,6 +108,11 @@ class ShipmentInternal:
|
|||
with Transaction().set_context(check_current_location=False):
|
||||
super(ShipmentInternal, cls).wait(shipments)
|
||||
|
||||
@classmethod
|
||||
def ship(cls, shipments):
|
||||
with Transaction().set_context(check_current_location=False):
|
||||
super(ShipmentInternal, cls).ship(shipments)
|
||||
|
||||
@classmethod
|
||||
def done(cls, shipments):
|
||||
with Transaction().set_context(check_current_location=False):
|
||||
|
@ -116,30 +132,3 @@ class ShipmentInternal:
|
|||
def assign_force(cls, shipments):
|
||||
with Transaction().set_context(check_current_location=False):
|
||||
super(ShipmentInternal, cls).assign_force(shipments)
|
||||
|
||||
|
||||
class InventoryLine:
|
||||
__name__ = 'stock.inventory.line'
|
||||
__metaclass__ = PoolMeta
|
||||
|
||||
account_move = fields.Function(fields.Many2One('account.move',
|
||||
'Account Move'), 'get_account_move')
|
||||
|
||||
def get_account_move_id(self, account_move):
|
||||
if not account_move:
|
||||
return None
|
||||
if not account_move.origin:
|
||||
return None
|
||||
AccountMove = Pool().get('account.move')
|
||||
account_move_origin = '%s,%s' % (account_move.origin.__name__,
|
||||
account_move.origin.id)
|
||||
account_move, = AccountMove.search([
|
||||
'origin', '=', account_move_origin,
|
||||
])
|
||||
return account_move.id
|
||||
|
||||
def get_account_move(self, name):
|
||||
for move in self.moves:
|
||||
account_move = move._get_account_stock_move()
|
||||
return self.get_account_move_id(account_move)
|
||||
return None
|
||||
|
|
|
@ -28,19 +28,6 @@
|
|||
<field name="name">stock_move_list</field>
|
||||
</record>
|
||||
|
||||
<!-- Inventory Line -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_inventory_line_view_form">
|
||||
<field name="model">stock.inventory.line</field>
|
||||
<field name="inherit" ref="stock.inventory_line_view_form"/>
|
||||
<field name="name">stock_inventory_line_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_inventory_line_view_list">
|
||||
<field name="model">stock.inventory.line</field>
|
||||
<field name="inherit" ref="stock.inventory_line_view_tree"/>
|
||||
<field name="name">stock_inventory_line_list</field>
|
||||
</record>
|
||||
|
||||
<!-- Shipment -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_shipment_in_view_form">
|
|
@ -0,0 +1,140 @@
|
|||
=============
|
||||
LIMS Scenario
|
||||
=============
|
||||
|
||||
Imports::
|
||||
>>> import datetime
|
||||
>>> from proteus import Model, Wizard
|
||||
>>> from trytond.tests.tools import activate_modules
|
||||
>>> from trytond.modules.company.tests.tools import create_company, \
|
||||
... get_company
|
||||
>>> from trytond.modules.lims.tests.tools import \
|
||||
... set_lims_configuration, create_workyear, create_base_tables
|
||||
>>> today = datetime.date.today()
|
||||
|
||||
Install lims_tests::
|
||||
|
||||
>>> config = activate_modules('lims')
|
||||
|
||||
Create company::
|
||||
|
||||
>>> _ = create_company()
|
||||
>>> company = get_company()
|
||||
|
||||
Set Lims configuration::
|
||||
|
||||
>>> set_lims_configuration(company)
|
||||
>>> create_workyear(company, today)
|
||||
|
||||
Create base tables::
|
||||
|
||||
>>> create_base_tables()
|
||||
|
||||
Create customer::
|
||||
|
||||
>>> Party = Model.get('party.party')
|
||||
>>> customer = Party(name='Customer')
|
||||
>>> address = customer.addresses.new()
|
||||
>>> address.invoice_contact = True
|
||||
>>> address.invoice_contact_default = True
|
||||
>>> address.report_contact = True
|
||||
>>> address.report_contact_default = True
|
||||
>>> address.acknowledgment_contact = True
|
||||
>>> address.acknowledgment_contact_default = True
|
||||
>>> address.email = 'name@domain.com'
|
||||
>>> customer.save()
|
||||
|
||||
Create Entry::
|
||||
|
||||
>>> Entry = Model.get('lims.entry')
|
||||
>>> entry = Entry()
|
||||
>>> entry.party = customer
|
||||
>>> entry.save()
|
||||
|
||||
Create Samples::
|
||||
|
||||
>>> product_type, = Model.get('lims.product.type').find([
|
||||
... ('code', '=', 'WINE')])
|
||||
>>> matrix, = Model.get('lims.matrix').find([
|
||||
... ('code', '=', 'GRAPE')])
|
||||
>>> fraction_state, = Model.get('lims.packaging.integrity').find([
|
||||
... ('code', '=', 'OK')])
|
||||
>>> package_type, = Model.get('lims.packaging.type').find([
|
||||
... ('code', '=', '01')])
|
||||
>>> zone, = Model.get('lims.zone').find([
|
||||
... ('code', '=', 'N')])
|
||||
>>> fraction_type, = Model.get('lims.fraction.type').find([
|
||||
... ('code', '=', 'MCL')])
|
||||
>>> storage_location, = Model.get('stock.location').find([
|
||||
... ('code', '=', 'STO')])
|
||||
>>> analysis, = Model.get('lims.analysis').find([
|
||||
... ('code', '=', '0002')])
|
||||
>>> laboratory, = Model.get('lims.laboratory').find([
|
||||
... ('code', '=', 'SQ')])
|
||||
>>> method, = Model.get('lims.lab.method').find([
|
||||
... ('code', '=', '002')])
|
||||
>>> device, = Model.get('lims.lab.device').find([
|
||||
... ('code', '=', 'PH01')])
|
||||
|
||||
>>> create_sample = Wizard('lims.create_sample', [entry])
|
||||
|
||||
>>> create_sample.form.sample_client_description = 'Wine'
|
||||
>>> create_sample.form.product_type = product_type
|
||||
>>> create_sample.form.matrix = matrix
|
||||
>>> create_sample.form.fraction_state = fraction_state
|
||||
>>> create_sample.form.package_type = package_type
|
||||
>>> create_sample.form.packages_quantity = 1
|
||||
>>> create_sample.form.zone = zone
|
||||
>>> create_sample.form.fraction_type = fraction_type
|
||||
>>> create_sample.form.storage_location = storage_location
|
||||
>>> create_sample.form.labels = u'LBL-001\nLBL-002\nLBL-003'
|
||||
|
||||
>>> service = create_sample.form.services.new()
|
||||
>>> service.analysis = analysis
|
||||
>>> service.laboratory = laboratory
|
||||
>>> service.method = method
|
||||
>>> service.device = device
|
||||
|
||||
>>> create_sample.execute('create_')
|
||||
|
||||
Confirm Entry::
|
||||
|
||||
>>> entry.reload()
|
||||
>>> entry.click('confirm')
|
||||
|
||||
Plan the analysis::
|
||||
|
||||
>>> Professional = Model.get('lims.laboratory.professional')
|
||||
>>> professional, = Professional.find([('code', '=', 'LP')])
|
||||
|
||||
>>> Planification = Model.get('lims.planification')
|
||||
>>> planification = Planification()
|
||||
>>> planification.laboratory = laboratory
|
||||
>>> planification.start_date = today
|
||||
>>> planification.date_from = today
|
||||
>>> planification.date_to = today
|
||||
>>> planification.analysis.append(analysis)
|
||||
>>> _ = planification.technicians.new(laboratory_professional=professional)
|
||||
>>> planification.save()
|
||||
|
||||
>>> planification.reload()
|
||||
>>> search_fractions = Wizard('lims.planification.search_fractions',
|
||||
... [planification])
|
||||
|
||||
>>> details = Model.get(
|
||||
... 'lims.planification.search_fractions.detail').find()
|
||||
>>> for d in details:
|
||||
... search_fractions.form.details.append(d)
|
||||
>>> search_fractions.execute('add')
|
||||
|
||||
>>> planification.reload()
|
||||
>>> planification.click('preplan')
|
||||
>>> for f in planification.details:
|
||||
... for s in f.details:
|
||||
... s.staff_responsible.append(Professional(professional.id))
|
||||
>>> planification.save()
|
||||
|
||||
>>> planification.reload()
|
||||
>>> technicians_qualification = Wizard(
|
||||
... 'lims.planification.technicians_qualification', [planification])
|
||||
>>> _ = planification.click('confirm')
|
|
@ -2,8 +2,11 @@
|
|||
# The COPYRIGHT file at the top level of this repository contains
|
||||
# the full copyright notices and license terms.
|
||||
import unittest
|
||||
import doctest
|
||||
import trytond.tests.test_tryton
|
||||
from trytond.tests.test_tryton import ModuleTestCase
|
||||
from trytond.tests.test_tryton import doctest_teardown
|
||||
from trytond.tests.test_tryton import doctest_checker
|
||||
|
||||
|
||||
class LimsTestCase(ModuleTestCase):
|
||||
|
@ -15,4 +18,8 @@ def suite():
|
|||
suite = trytond.tests.test_tryton.suite()
|
||||
suite.addTests(unittest.TestLoader().loadTestsFromTestCase(
|
||||
LimsTestCase))
|
||||
suite.addTests(doctest.DocFileSuite('scenario_lims.rst',
|
||||
tearDown=doctest_teardown, encoding='utf-8',
|
||||
checker=doctest_checker,
|
||||
optionflags=doctest.REPORT_ONLY_FIRST_FAILURE))
|
||||
return suite
|
||||
|
|
|
@ -0,0 +1,333 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# This file is part of the lims module for Tryton.
|
||||
# The COPYRIGHT file at the top level of this repository contains
|
||||
# the full copyright notices and license terms.
|
||||
import datetime
|
||||
from decimal import Decimal
|
||||
from dateutil.relativedelta import relativedelta
|
||||
|
||||
from proteus import Model
|
||||
|
||||
from trytond.modules.company.tests.tools import get_company
|
||||
|
||||
__all__ = ['set_lims_configuration', 'create_workyear', 'create_base_tables']
|
||||
|
||||
|
||||
def set_lims_configuration(company=None, config=None):
|
||||
"Set Lims Configuration"
|
||||
if not company:
|
||||
company = get_company()
|
||||
|
||||
# Create fraction product
|
||||
ProductUom = Model.get('product.uom', config=config)
|
||||
unit, = ProductUom.find([('name', '=', 'Unit')])
|
||||
ProductTemplate = Model.get('product.template', config=config)
|
||||
Product = Model.get('product.product', config=config)
|
||||
fraction_product = Product()
|
||||
fraction_template = ProductTemplate()
|
||||
fraction_template.name = 'Fraction'
|
||||
fraction_template.default_uom = unit
|
||||
fraction_template.type = 'goods'
|
||||
fraction_template.list_price = Decimal('1')
|
||||
fraction_template.cost_price = Decimal('1')
|
||||
fraction_template.save()
|
||||
fraction_product.template = fraction_template
|
||||
fraction_product.save()
|
||||
|
||||
# Create analysis product category
|
||||
ProductCategory = Model.get('product.category', config=config)
|
||||
analysis_product_category = ProductCategory()
|
||||
analysis_product_category.name = 'Analysis Services'
|
||||
analysis_product_category.save()
|
||||
|
||||
# Create default notebook view
|
||||
default_notebook_view = _create_default_notebook_view(config)
|
||||
|
||||
# Create required sequences
|
||||
Sequence = Model.get('ir.sequence', config=config)
|
||||
planification_sequence = Sequence()
|
||||
planification_sequence.name = 'Planification Sequence'
|
||||
planification_sequence.code = 'lims.planification'
|
||||
planification_sequence.company = company
|
||||
planification_sequence.save()
|
||||
|
||||
# Set Lims configuration
|
||||
LimsConfiguration = Model.get('lims.configuration', config=config)
|
||||
lims_config, = LimsConfiguration.find()
|
||||
lims_config.fraction_product = fraction_product
|
||||
lims_config.analysis_product_category = analysis_product_category
|
||||
lims_config.default_notebook_view = default_notebook_view
|
||||
lims_config.planification_sequence = planification_sequence
|
||||
lims_config.save()
|
||||
|
||||
|
||||
def _create_default_notebook_view(config=None):
|
||||
"Create default notebook view"
|
||||
NotebookView = Model.get('lims.notebook.view', config=config)
|
||||
NotebookViewColumn = Model.get('lims.notebook.view.column', config=config)
|
||||
Field = Model.get('ir.model.field', config=config)
|
||||
|
||||
default_notebook_view = NotebookView()
|
||||
default_notebook_view.name = 'Default View'
|
||||
sequence = 1
|
||||
for field_name in ('analysis', ):
|
||||
column = NotebookViewColumn()
|
||||
default_notebook_view.columns.append(column)
|
||||
field, = Field.find([
|
||||
('model.model', '=', 'lims.notebook.line'),
|
||||
('name', '=', field_name),
|
||||
])
|
||||
column.field = field
|
||||
column.sequence = sequence
|
||||
sequence += 1
|
||||
default_notebook_view.save()
|
||||
return default_notebook_view
|
||||
|
||||
|
||||
def create_workyear(company=None, today=None, config=None):
|
||||
"Create Work Year"
|
||||
if not company:
|
||||
company = get_company()
|
||||
if not today:
|
||||
today = datetime.date.today()
|
||||
|
||||
# Create sequences
|
||||
Sequence = Model.get('ir.sequence', config=config)
|
||||
entry_sequence = Sequence()
|
||||
entry_sequence.name = 'Entry Sequence'
|
||||
entry_sequence.code = 'lims.entry'
|
||||
entry_sequence.company = company
|
||||
entry_sequence.save()
|
||||
sample_sequence = Sequence()
|
||||
sample_sequence.name = 'Sample Sequence'
|
||||
sample_sequence.code = 'lims.sample'
|
||||
sample_sequence.company = company
|
||||
sample_sequence.save()
|
||||
service_sequence = Sequence()
|
||||
service_sequence.name = 'Service Sequence'
|
||||
service_sequence.code = 'lims.service'
|
||||
service_sequence.company = company
|
||||
service_sequence.save()
|
||||
results_report_sequence = Sequence()
|
||||
results_report_sequence.name = 'Results Report Sequence'
|
||||
results_report_sequence.code = 'lims.results_report'
|
||||
results_report_sequence.company = company
|
||||
results_report_sequence.save()
|
||||
|
||||
# Create Work Year
|
||||
LabWorkYear = Model.get('lims.lab.workyear', config=config)
|
||||
workyear = LabWorkYear()
|
||||
workyear.code = str(today.year)
|
||||
workyear.start_date = today + relativedelta(month=1, day=1)
|
||||
workyear.end_date = today + relativedelta(month=12, day=31)
|
||||
workyear.entry_sequence = entry_sequence
|
||||
workyear.sample_sequence = sample_sequence
|
||||
workyear.service_sequence = service_sequence
|
||||
workyear.results_report_sequence = results_report_sequence
|
||||
workyear.save()
|
||||
|
||||
# Set default entry control
|
||||
default_entry_control = _create_default_entry_control(company, today,
|
||||
config)
|
||||
workyear.default_entry_control = default_entry_control
|
||||
workyear.save()
|
||||
|
||||
|
||||
def _create_default_entry_control(company=None, today=None, config=None):
|
||||
"Create default entry control"
|
||||
Entry = Model.get('lims.entry', config=config)
|
||||
InvoiceContact = Model.get('lims.entry.invoice_contacts', config=config)
|
||||
ReportContact = Model.get('lims.entry.report_contacts', config=config)
|
||||
AcknowledgmentContact = Model.get('lims.entry.acknowledgment_contacts',
|
||||
config=config)
|
||||
|
||||
default_entry_control = Entry()
|
||||
default_entry_control.date = datetime.datetime.combine(today,
|
||||
datetime.time.min)
|
||||
default_entry_control.party = company.party
|
||||
default_entry_control.invoice_party = company.party
|
||||
|
||||
# Set party contacts
|
||||
contact = _create_company_contacts(company, config)
|
||||
invoice_contact = InvoiceContact()
|
||||
default_entry_control.invoice_contacts.append(invoice_contact)
|
||||
invoice_contact.contact = contact
|
||||
report_contact = ReportContact()
|
||||
default_entry_control.report_contacts.append(report_contact)
|
||||
report_contact.contact = contact
|
||||
acknowledgment_contact = AcknowledgmentContact()
|
||||
default_entry_control.acknowledgment_contacts.append(
|
||||
acknowledgment_contact)
|
||||
acknowledgment_contact.contact = contact
|
||||
|
||||
default_entry_control.no_acknowledgment_of_receipt = True
|
||||
default_entry_control.state = 'draft'
|
||||
default_entry_control.save()
|
||||
|
||||
# Confirm entry
|
||||
default_entry_control.click('confirm')
|
||||
return default_entry_control
|
||||
|
||||
|
||||
def _create_company_contacts(company=None, config=None):
|
||||
"Create contacts for company party"
|
||||
if not company:
|
||||
company = get_company()
|
||||
|
||||
Address = Model.get('party.address', config=config)
|
||||
address, = Address.find([('party', '=', company.party.id)])
|
||||
address.invoice_contact = True
|
||||
address.report_contact = True
|
||||
address.acknowledgment_contact = True
|
||||
address.email = 'name@domain.com'
|
||||
address.save()
|
||||
return address
|
||||
|
||||
|
||||
def create_base_tables(config=None):
|
||||
"Create Base Tables"
|
||||
|
||||
# Configuration / Certification
|
||||
|
||||
# Configuration / Entry
|
||||
_create_base_entry_tables(config)
|
||||
|
||||
# Configuration / Laboratory
|
||||
_create_base_laboratory_tables(config)
|
||||
|
||||
# Configuration / Base Tables
|
||||
_create_base_tables(config)
|
||||
|
||||
|
||||
def _create_base_entry_tables(config=None):
|
||||
"Configuration / Entry"
|
||||
PackagingType = Model.get('lims.packaging.type', config=config)
|
||||
PackagingIntegrity = Model.get('lims.packaging.integrity', config=config)
|
||||
Zone = Model.get('lims.zone', config=config)
|
||||
EntrySuspensionReason = Model.get('lims.entry.suspension.reason',
|
||||
config=config)
|
||||
|
||||
packaging_type = PackagingType(
|
||||
code='01',
|
||||
description='Package')
|
||||
packaging_type.save()
|
||||
|
||||
packaging_integrity = PackagingIntegrity(
|
||||
code='OK',
|
||||
description='Ok')
|
||||
packaging_integrity.save()
|
||||
|
||||
zone = Zone(
|
||||
code='N',
|
||||
description='North')
|
||||
zone.save()
|
||||
|
||||
suspension_reason = EntrySuspensionReason(
|
||||
code='01',
|
||||
description='Administration pending',
|
||||
by_default=True)
|
||||
suspension_reason.save()
|
||||
|
||||
|
||||
def _create_base_laboratory_tables(config=None):
|
||||
"Configuration / Laboratory"
|
||||
LaboratoryProfessional = Model.get('lims.laboratory.professional',
|
||||
config=config)
|
||||
Laboratory = Model.get('lims.laboratory', config=config)
|
||||
LabDeviceType = Model.get('lims.lab.device.type', config=config)
|
||||
LabDevice = Model.get('lims.lab.device', config=config)
|
||||
User = Model.get('res.user', config=config)
|
||||
Party = Model.get('party.party', config=config)
|
||||
Location = Model.get('stock.location', config=config)
|
||||
|
||||
lims_user = User(1)
|
||||
party = Party(
|
||||
name='Laboratory Professional',
|
||||
is_lab_professional=True,
|
||||
lims_user=lims_user)
|
||||
party.save()
|
||||
professional = LaboratoryProfessional(
|
||||
party=party,
|
||||
code='LP',
|
||||
role='Responsible')
|
||||
professional.save()
|
||||
|
||||
related_location, = Location.find([('code', '=', 'STO')])
|
||||
laboratory = Laboratory(
|
||||
code='SQ',
|
||||
description='Chemistry Laboratory',
|
||||
default_laboratory_professional=professional,
|
||||
default_signer=professional,
|
||||
related_location=related_location,
|
||||
section='sq')
|
||||
laboratory.save()
|
||||
|
||||
lims_user.laboratories.append(laboratory)
|
||||
lims_user.save()
|
||||
|
||||
device_type = LabDeviceType(
|
||||
code='PH',
|
||||
description='pH Meters')
|
||||
device_type.save()
|
||||
|
||||
device = LabDevice(
|
||||
code='PH01',
|
||||
description='pH Meter 01',
|
||||
device_type=device_type)
|
||||
device.laboratories.new(laboratory=laboratory)
|
||||
device.save()
|
||||
|
||||
|
||||
def _create_base_tables(config=None):
|
||||
"Configuration / Base Tables"
|
||||
ProductType = Model.get('lims.product.type', config=config)
|
||||
Matrix = Model.get('lims.matrix', config=config)
|
||||
LabMethod = Model.get('lims.lab.method', config=config)
|
||||
Analysis = Model.get('lims.analysis', config=config)
|
||||
Typification = Model.get('lims.typification', config=config)
|
||||
Laboratory = Model.get('lims.laboratory', config=config)
|
||||
LabDevice = Model.get('lims.lab.device', config=config)
|
||||
FractionType = Model.get('lims.fraction.type', config=config)
|
||||
|
||||
product_type = ProductType(
|
||||
code='WINE',
|
||||
description='Wine')
|
||||
product_type.save()
|
||||
|
||||
matrix = Matrix(
|
||||
code='GRAPE',
|
||||
description='Grape')
|
||||
matrix.save()
|
||||
|
||||
method = LabMethod(
|
||||
code='002',
|
||||
name='SQ 002 : By potentiometry',
|
||||
determination='DETERMINATION OF pH MEASUREMENT BY POTENTIOMETRY',
|
||||
requalification_months=12,
|
||||
results_estimated_waiting=10)
|
||||
method.save()
|
||||
|
||||
laboratory, = Laboratory.find([('code', '=', 'SQ')])
|
||||
device, = LabDevice.find([('code', '=', 'PH01')])
|
||||
analysis = Analysis(
|
||||
code='0002',
|
||||
description='pH (at 20°C)',
|
||||
type='analysis',
|
||||
behavior='normal')
|
||||
analysis.laboratories.new(laboratory=laboratory)
|
||||
analysis.methods.append(method)
|
||||
analysis.devices.new(laboratory=laboratory, device=device)
|
||||
analysis.save()
|
||||
analysis.click('activate')
|
||||
|
||||
typification = Typification(
|
||||
product_type=product_type,
|
||||
matrix=matrix,
|
||||
analysis=analysis,
|
||||
method=method)
|
||||
typification.save()
|
||||
|
||||
fraction_type = FractionType(
|
||||
code='MCL',
|
||||
description='Customer')
|
||||
fraction_type.save()
|
|
@ -1,20 +1,22 @@
|
|||
[tryton]
|
||||
version=4.4.0
|
||||
version=4.8.0
|
||||
depends:
|
||||
account_invoice
|
||||
account_stock_continental
|
||||
carrier
|
||||
party_relationship
|
||||
lims_department
|
||||
stock_lot
|
||||
xml:
|
||||
security/users.xml
|
||||
lims_view.xml
|
||||
configuration_view.xml
|
||||
stock_view.xml
|
||||
product_view.xml
|
||||
party_view.xml
|
||||
lims_report.xml
|
||||
wizard/lims.xml
|
||||
data/lims_sequences.xml
|
||||
lims_menu.xml
|
||||
security/access_rights.xml
|
||||
user.xml
|
||||
laboratory.xml
|
||||
configuration.xml
|
||||
department.xml
|
||||
analysis.xml
|
||||
entry.xml
|
||||
sample.xml
|
||||
planification.xml
|
||||
notebook.xml
|
||||
uom.xml
|
||||
control_tendency.xml
|
||||
certification.xml
|
||||
results_report.xml
|
||||
stock.xml
|
||||
party.xml
|
||||
|
|
|
@ -0,0 +1,245 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# This file is part of lims module for Tryton.
|
||||
# The COPYRIGHT file at the top level of this repository contains
|
||||
# the full copyright notices and license terms.
|
||||
from trytond.model import ModelView, ModelSQL, fields, Unique
|
||||
from trytond.pool import Pool, PoolMeta
|
||||
from trytond.pyson import Eval
|
||||
|
||||
__all__ = ['Uom', 'UomCategory', 'UomConversion', 'Template',
|
||||
'ConcentrationLevel', 'VolumeConversion']
|
||||
|
||||
|
||||
class Uom:
|
||||
__name__ = 'product.uom'
|
||||
__metaclass__ = PoolMeta
|
||||
|
||||
maximum_concentration = fields.Char('Maximum concentration')
|
||||
rsd_horwitz = fields.Char('% RSD Horwitz')
|
||||
|
||||
@classmethod
|
||||
def __setup__(cls):
|
||||
super(Uom, cls).__setup__()
|
||||
cls.symbol.size = 30
|
||||
t = cls.__table__()
|
||||
cls._sql_constraints += [
|
||||
('symbol_uniq', Unique(t, t.symbol),
|
||||
'UoM symbol must be unique'),
|
||||
]
|
||||
|
||||
def get_rec_name(self, name):
|
||||
return self.symbol
|
||||
|
||||
|
||||
class UomCategory:
|
||||
__name__ = 'product.uom.category'
|
||||
__metaclass__ = PoolMeta
|
||||
|
||||
lims_only_available = fields.Boolean('Only available in Lims')
|
||||
|
||||
@staticmethod
|
||||
def default_lims_only_available():
|
||||
return False
|
||||
|
||||
|
||||
class UomConversion(ModelSQL, ModelView):
|
||||
'Uom Conversion'
|
||||
__name__ = 'lims.uom.conversion'
|
||||
|
||||
initial_uom = fields.Many2One('product.uom', 'Initial UoM', required=True,
|
||||
domain=[('category.lims_only_available', '=', True)])
|
||||
final_uom = fields.Many2One('product.uom', 'Final UoM', required=True,
|
||||
domain=[('category.lims_only_available', '=', True)])
|
||||
initial_uom_volume = fields.Boolean('Volume involved in Initial UoM')
|
||||
final_uom_volume = fields.Boolean('Volume involved in Final UoM')
|
||||
conversion_formula = fields.Char('Conversion formula')
|
||||
|
||||
@classmethod
|
||||
def get_conversion_formula(cls, initial_uom, final_uom):
|
||||
if not initial_uom or not final_uom:
|
||||
return None
|
||||
values = cls.search([
|
||||
('initial_uom', '=', initial_uom),
|
||||
('final_uom', '=', final_uom),
|
||||
])
|
||||
if values:
|
||||
return values[0].conversion_formula
|
||||
return None
|
||||
|
||||
|
||||
class Template:
|
||||
__name__ = "product.template"
|
||||
__metaclass__ = PoolMeta
|
||||
|
||||
@classmethod
|
||||
def __setup__(cls):
|
||||
super(Template, cls).__setup__()
|
||||
new_domain = [('category.lims_only_available', '!=', True)]
|
||||
cls.default_uom.domain = new_domain
|
||||
|
||||
|
||||
class VolumeConversion(ModelSQL, ModelView):
|
||||
'Volume Conversion'
|
||||
__name__ = 'lims.volume.conversion'
|
||||
|
||||
brix = fields.Float('Brix', required=True, digits=(16,
|
||||
Eval('brix_digits', 2)), depends=['brix_digits'])
|
||||
density = fields.Float('Density', required=True, digits=(16,
|
||||
Eval('density_digits', 2)), depends=['density_digits'])
|
||||
soluble_solids = fields.Float('Soluble solids', required=True,
|
||||
digits=(16, Eval('soluble_solids_digits', 2)),
|
||||
depends=['soluble_solids_digits'])
|
||||
brix_digits = fields.Function(fields.Integer('Brix digits'),
|
||||
'get_configuration_field')
|
||||
density_digits = fields.Function(fields.Integer('Density digits'),
|
||||
'get_configuration_field')
|
||||
soluble_solids_digits = fields.Function(fields.Integer(
|
||||
'Soluble solids digits'), 'get_configuration_field')
|
||||
|
||||
@classmethod
|
||||
def __setup__(cls):
|
||||
super(VolumeConversion, cls).__setup__()
|
||||
cls._order.insert(0, ('brix', 'ASC'))
|
||||
|
||||
@staticmethod
|
||||
def default_brix_digits():
|
||||
Config = Pool().get('lims.configuration')
|
||||
config = Config(1)
|
||||
return getattr(config, 'brix_digits', 2)
|
||||
|
||||
@staticmethod
|
||||
def default_density_digits():
|
||||
Config = Pool().get('lims.configuration')
|
||||
config = Config(1)
|
||||
return getattr(config, 'density_digits', 2)
|
||||
|
||||
@staticmethod
|
||||
def default_soluble_solids_digits():
|
||||
Config = Pool().get('lims.configuration')
|
||||
config = Config(1)
|
||||
return getattr(config, 'soluble_solids_digits', 2)
|
||||
|
||||
@classmethod
|
||||
def get_configuration_field(cls, volume_conversions, names):
|
||||
Config = Pool().get('lims.configuration')
|
||||
config = Config(1)
|
||||
|
||||
result = {}
|
||||
for name in names:
|
||||
value = getattr(config, name, 2)
|
||||
result[name] = dict((vc.id, value)
|
||||
for vc in volume_conversions)
|
||||
return result
|
||||
|
||||
@classmethod
|
||||
def brixToDensity(cls, brix):
|
||||
if not brix:
|
||||
return None
|
||||
brix = float(brix)
|
||||
|
||||
values = cls.search([
|
||||
('brix', '=', brix),
|
||||
], limit=1)
|
||||
if values:
|
||||
return values[0].density
|
||||
|
||||
intrpltn = {
|
||||
'x_a': 0,
|
||||
'y_a': 0,
|
||||
'x_b': 0,
|
||||
'y_b': 0,
|
||||
}
|
||||
lower_values = cls.search([
|
||||
('brix', '<', brix),
|
||||
], order=[('brix', 'DESC')], limit=1)
|
||||
if not lower_values:
|
||||
return None
|
||||
intrpltn['x_a'] = lower_values[0].brix
|
||||
intrpltn['y_a'] = lower_values[0].density
|
||||
|
||||
upper_values = cls.search([
|
||||
('brix', '>', brix),
|
||||
], order=[('brix', 'ASC')], limit=1)
|
||||
if not upper_values:
|
||||
return None
|
||||
intrpltn['x_b'] = upper_values[0].brix
|
||||
intrpltn['y_b'] = upper_values[0].density
|
||||
|
||||
value = (intrpltn['y_a'] + (brix - intrpltn['x_a']) * (
|
||||
(intrpltn['y_b'] - intrpltn['y_a']) /
|
||||
(intrpltn['x_b'] - intrpltn['x_a'])))
|
||||
return value
|
||||
|
||||
@classmethod
|
||||
def brixToSolubleSolids(cls, brix):
|
||||
if not brix:
|
||||
return None
|
||||
brix = float(brix)
|
||||
|
||||
values = cls.search([
|
||||
('brix', '=', brix),
|
||||
], limit=1)
|
||||
if values:
|
||||
return values[0].soluble_solids
|
||||
|
||||
intrpltn = {
|
||||
'x_a': 0,
|
||||
'y_a': 0,
|
||||
'x_b': 0,
|
||||
'y_b': 0,
|
||||
}
|
||||
lower_values = cls.search([
|
||||
('brix', '<', brix),
|
||||
], order=[('brix', 'DESC')], limit=1)
|
||||
if not lower_values:
|
||||
return None
|
||||
intrpltn['x_a'] = lower_values[0].brix
|
||||
intrpltn['y_a'] = lower_values[0].soluble_solids
|
||||
|
||||
upper_values = cls.search([
|
||||
('brix', '>', brix),
|
||||
], order=[('brix', 'ASC')], limit=1)
|
||||
if not upper_values:
|
||||
return None
|
||||
intrpltn['x_b'] = upper_values[0].brix
|
||||
intrpltn['y_b'] = upper_values[0].soluble_solids
|
||||
|
||||
value = (intrpltn['y_a'] + (brix - intrpltn['x_a']) * (
|
||||
(intrpltn['y_b'] - intrpltn['y_a']) /
|
||||
(intrpltn['x_b'] - intrpltn['x_a'])))
|
||||
return value
|
||||
|
||||
|
||||
class ConcentrationLevel(ModelSQL, ModelView):
|
||||
'Concentration Level'
|
||||
__name__ = 'lims.concentration.level'
|
||||
_rec_name = 'description'
|
||||
|
||||
code = fields.Char('Code', required=True)
|
||||
description = fields.Char('Description', required=True)
|
||||
|
||||
@classmethod
|
||||
def __setup__(cls):
|
||||
super(ConcentrationLevel, cls).__setup__()
|
||||
t = cls.__table__()
|
||||
cls._sql_constraints += [
|
||||
('code_uniq', Unique(t, t.code),
|
||||
'Concentration level code must be unique'),
|
||||
]
|
||||
|
||||
def get_rec_name(self, name):
|
||||
if self.code:
|
||||
return self.code + ' - ' + self.description
|
||||
else:
|
||||
return self.description
|
||||
|
||||
@classmethod
|
||||
def search_rec_name(cls, name, clause):
|
||||
field = None
|
||||
for field in ('code', 'description'):
|
||||
records = cls.search([(field,) + tuple(clause[1:])], limit=1)
|
||||
if records:
|
||||
break
|
||||
if records:
|
||||
return [(field,) + tuple(clause[1:])]
|
||||
return [(cls._rec_name,) + tuple(clause[1:])]
|
|
@ -0,0 +1,170 @@
|
|||
<?xml version="1.0"?>
|
||||
<tryton>
|
||||
<data>
|
||||
|
||||
<!-- Product UoM -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_uom_view_list">
|
||||
<field name="model">product.uom</field>
|
||||
<field name="inherit" ref="product.uom_view_tree"/>
|
||||
<field name="name">product_uom_list</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_uom_view_form">
|
||||
<field name="model">product.uom</field>
|
||||
<field name="inherit" ref="product.uom_view_form"/>
|
||||
<field name="name">product_uom_form</field>
|
||||
</record>
|
||||
|
||||
<!-- UoM Categories -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_uom_category_view_list">
|
||||
<field name="model">product.uom.category</field>
|
||||
<field name="inherit" ref="product.uom_category_view_tree"/>
|
||||
<field name="name">product_uom_category_list</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="lims_uom_category_view_form">
|
||||
<field name="model">product.uom.category</field>
|
||||
<field name="inherit" ref="product.uom_category_view_form"/>
|
||||
<field name="name">product_uom_category_form</field>
|
||||
</record>
|
||||
|
||||
<!-- Volume Conversion -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_volume_conversion_view_form">
|
||||
<field name="model">lims.volume.conversion</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">volume_conversion_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_volume_conversion_view_list">
|
||||
<field name="model">lims.volume.conversion</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">volume_conversion_list</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.act_window" id="act_lims_volume_conversion_list">
|
||||
<field name="name">Volume Conversions</field>
|
||||
<field name="res_model">lims.volume.conversion</field>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_lims_volume_conversion_view_list">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="lims_volume_conversion_view_list"/>
|
||||
<field name="act_window" ref="act_lims_volume_conversion_list"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_lims_volume_conversion_view_form">
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="view" ref="lims_volume_conversion_view_form"/>
|
||||
<field name="act_window" ref="act_lims_volume_conversion_list"/>
|
||||
</record>
|
||||
|
||||
<!-- Uom Conversion -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_uom_conversion_view_form">
|
||||
<field name="model">lims.uom.conversion</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">uom_conversion_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_uom_conversion_view_list">
|
||||
<field name="model">lims.uom.conversion</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">uom_conversion_list</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.act_window" id="act_lims_uom_conversion_list">
|
||||
<field name="name">Uom Conversions</field>
|
||||
<field name="res_model">lims.uom.conversion</field>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_lims_uom_conversion_view_list">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="lims_uom_conversion_view_list"/>
|
||||
<field name="act_window" ref="act_lims_uom_conversion_list"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_lims_uom_conversion_view_form">
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="view" ref="lims_uom_conversion_view_form"/>
|
||||
<field name="act_window" ref="act_lims_uom_conversion_list"/>
|
||||
</record>
|
||||
|
||||
<!-- Concentration Level -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_concentration_level_view_list">
|
||||
<field name="model">lims.concentration.level</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">concentration_level_list</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_concentration_level_view_form">
|
||||
<field name="model">lims.concentration.level</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">concentration_level_form</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.act_window" id="act_lims_concentration_level">
|
||||
<field name="name">Concentration Levels</field>
|
||||
<field name="res_model">lims.concentration.level</field>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_lims_concentration_level_view_list">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="lims_concentration_level_view_list"/>
|
||||
<field name="act_window" ref="act_lims_concentration_level"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_lims_concentration_level_view_form">
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="view" ref="lims_concentration_level_view_form"/>
|
||||
<field name="act_window" ref="act_lims_concentration_level"/>
|
||||
</record>
|
||||
|
||||
<menuitem parent="lims_config_base_tables" action="act_lims_volume_conversion_list"
|
||||
id="lims_volume_conversion_list_menu" sequence="100"/>
|
||||
<menuitem parent="lims_config_base_tables" action="act_lims_uom_conversion_list"
|
||||
id="lims_uom_conversion_list_menu" sequence="110"/>
|
||||
|
||||
<record model="ir.model.access" id="access_volume_conversion">
|
||||
<field name="model" search="[('model', '=', 'lims.volume.conversion')]"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
<field name="perm_create" eval="False"/>
|
||||
<field name="perm_delete" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.access" id="access_volume_conversion_group_conf_base_tables_admin">
|
||||
<field name="model" search="[('model', '=', 'lims.volume.conversion')]"/>
|
||||
<field name="group" ref="group_lims_conf_base_tables_admin"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
<field name="perm_create" eval="True"/>
|
||||
<field name="perm_delete" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.access" id="access_uom_conversion">
|
||||
<field name="model" search="[('model', '=', 'lims.uom.conversion')]"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
<field name="perm_create" eval="False"/>
|
||||
<field name="perm_delete" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.access" id="access_uom_conversion_group_conf_base_tables_admin">
|
||||
<field name="model" search="[('model', '=', 'lims.uom.conversion')]"/>
|
||||
<field name="group" ref="group_lims_conf_base_tables_admin"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
<field name="perm_create" eval="True"/>
|
||||
<field name="perm_delete" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.access" id="access_concentration_level">
|
||||
<field name="model" search="[('model', '=', 'lims.concentration.level')]"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
<field name="perm_create" eval="False"/>
|
||||
<field name="perm_delete" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.access" id="access_concentration_level_group_control">
|
||||
<field name="model" search="[('model', '=', 'lims.concentration.level')]"/>
|
||||
<field name="group" ref="group_lims_control"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
<field name="perm_create" eval="True"/>
|
||||
<field name="perm_delete" eval="True"/>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</tryton>
|
|
@ -4,6 +4,52 @@ this repository contains the full copyright notices and license terms. -->
|
|||
<tryton>
|
||||
<data>
|
||||
|
||||
<!-- User Role -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_user_role_view_form">
|
||||
<field name="model">lims.user.role</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">user_role_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_user_role_view_list">
|
||||
<field name="model">lims.user.role</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="name">user_role_list</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.act_window" id="act_lims_user_role_list">
|
||||
<field name="name">User Roles</field>
|
||||
<field name="res_model">lims.user.role</field>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_lims_user_role_view_list">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="lims_user_role_view_list"/>
|
||||
<field name="act_window" ref="act_lims_user_role_list"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_lims_user_role_view_form">
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="view" ref="lims_user_role_view_form"/>
|
||||
<field name="act_window" ref="act_lims_user_role_list"/>
|
||||
</record>
|
||||
|
||||
<!-- User -->
|
||||
|
||||
<record model="ir.ui.view" id="lims_user_view_form_preferences">
|
||||
<field name="model">res.user</field>
|
||||
<field name="inherit" ref="res.user_view_form_preferences"/>
|
||||
<field name="name">user_form_preferences</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_user_view_form">
|
||||
<field name="model">res.user</field>
|
||||
<field name="inherit" ref="res.user_view_form"/>
|
||||
<field name="name">user_form</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="lims_user_view_list">
|
||||
<field name="model">res.user</field>
|
||||
<field name="inherit" ref="res.user_view_tree"/>
|
||||
<field name="name">user_list</field>
|
||||
</record>
|
||||
|
||||
<!-- Groups -->
|
||||
|
||||
<record model="res.group" id="group_lims_conf_base_readonly">
|
||||
|
@ -148,5 +194,45 @@ this repository contains the full copyright notices and license terms. -->
|
|||
<field name="group" ref="group_lims_entry"/>
|
||||
</record>
|
||||
|
||||
<!-- Groups -->
|
||||
|
||||
<record model="res.group" id="group_lims_blind_sample_readonly">
|
||||
<field name="name">Lims Blind Samples Read Only</field>
|
||||
</record>
|
||||
<record model="res.group" id="group_lims_blind_sample">
|
||||
<field name="name">Lims Blind Samples</field>
|
||||
</record>
|
||||
<record model="res.user-res.group" id="user_admin_group_lims_blind_sample">
|
||||
<field name="user" ref="res.user_admin"/>
|
||||
<field name="group" ref="group_lims_blind_sample"/>
|
||||
</record>
|
||||
|
||||
<record model="res.group" id="group_lims_planification_readonly">
|
||||
<field name="name">Lims Planification Read Only</field>
|
||||
</record>
|
||||
<record model="res.group" id="group_lims_planification">
|
||||
<field name="name">Lims Planification</field>
|
||||
</record>
|
||||
<record model="res.user-res.group" id="user_admin_group_lims_planification">
|
||||
<field name="user" ref="res.user_admin"/>
|
||||
<field name="group" ref="group_lims_planification"/>
|
||||
</record>
|
||||
|
||||
<!-- Users -->
|
||||
|
||||
<record model="res.user" id="user_planification_process">
|
||||
<field name="login">user_cron_planification_process</field>
|
||||
<field name="name">Cron Lims Planification Process</field>
|
||||
<field name="signature"></field>
|
||||
<field name="active" eval="False"/>
|
||||
</record>
|
||||
<record model="res.user-res.group" id="user_planification_process_group_planification">
|
||||
<field name="user" ref="user_planification_process"/>
|
||||
<field name="group" ref="group_lims_planification"/>
|
||||
</record>
|
||||
|
||||
<menuitem parent="res.menu_res" action="act_lims_user_role_list"
|
||||
id="lims_user_role_menu" sequence="5"/>
|
||||
|
||||
</data>
|
||||
</tryton>
|
|
@ -6,6 +6,8 @@
|
|||
<field name="fraction_product"/>
|
||||
<label name="default_notebook_view"/>
|
||||
<field name="default_notebook_view"/>
|
||||
<label name="planification_sequence"/>
|
||||
<field name="planification_sequence"/>
|
||||
<label name="rm_start_uom"/>
|
||||
<field name="rm_start_uom"/>
|
||||
<label name="invoice_party_relation_type"/>
|
||||
|
@ -16,8 +18,37 @@
|
|||
<field name="analysis_product_category"/>
|
||||
<label name="entry_confirm_background"/>
|
||||
<field name="entry_confirm_background"/>
|
||||
<label name="planification_process_background"/>
|
||||
<field name="planification_process_background"/>
|
||||
<field name="microbiology_laboratories" colspan="4"/>
|
||||
</page>
|
||||
<page string="Fraction Types" id="fraction_type">
|
||||
<label name="mcl_fraction_type"/>
|
||||
<field name="mcl_fraction_type"/>
|
||||
<label name="con_fraction_type"/>
|
||||
<field name="con_fraction_type"/>
|
||||
<label name="bmz_fraction_type"/>
|
||||
<field name="bmz_fraction_type"/>
|
||||
<label name="rm_fraction_type"/>
|
||||
<field name="rm_fraction_type"/>
|
||||
<label name="bre_fraction_type"/>
|
||||
<field name="bre_fraction_type"/>
|
||||
<label name="mrt_fraction_type"/>
|
||||
<field name="mrt_fraction_type"/>
|
||||
<label name="coi_fraction_type"/>
|
||||
<field name="coi_fraction_type"/>
|
||||
<label name="mrc_fraction_type"/>
|
||||
<field name="mrc_fraction_type"/>
|
||||
<label name="sla_fraction_type"/>
|
||||
<field name="sla_fraction_type"/>
|
||||
<label name="itc_fraction_type"/>
|
||||
<field name="itc_fraction_type"/>
|
||||
<label name="itl_fraction_type"/>
|
||||
<field name="itl_fraction_type"/>
|
||||
</page>
|
||||
<page string="Reagents" id="reagents">
|
||||
<field name="reagents" colspan="4"/>
|
||||
</page>
|
||||
<page string="Mail Acknowledgment of Samples Receipt"
|
||||
id="mail_ack_samples" col="6">
|
||||
<separator string="Email body of Acknowledgment of Samples Receipt"
|
||||
|
|
|
@ -4,6 +4,6 @@
|
|||
<field name="fraction"/>
|
||||
<field name="device"/>
|
||||
<field name="result"/>
|
||||
<field name="rules2"/>
|
||||
<field name="rules2" icon="icon"/>
|
||||
<field name="rule" tree_invisible="1"/>
|
||||
</tree>
|
||||
|
|
|
@ -14,6 +14,14 @@
|
|||
<field name="entry"/>
|
||||
<label name="party"/>
|
||||
<field name="party" colspan="3"/>
|
||||
<field name="cie_fraction_type" invisible="1" colspan="4"/>
|
||||
<group col="4" colspan="4" id="cie">
|
||||
<separator colspan="4" id="cie_separator" string="CIE"/>
|
||||
<label name="cie_min_value"/>
|
||||
<field name="cie_min_value"/>
|
||||
<label name="cie_max_value"/>
|
||||
<field name="cie_max_value"/>
|
||||
</group>
|
||||
<separator colspan="4" id="separator"/>
|
||||
<label name="analysis"/>
|
||||
<field name="analysis"/>
|
||||
|
@ -27,6 +35,8 @@
|
|||
<field name="device"/>
|
||||
<label name="analysis_origin"/>
|
||||
<field name="analysis_origin"/>
|
||||
<label name="state"/>
|
||||
<field name="state"/>
|
||||
<label name="report_grouper"/>
|
||||
<field name="report_grouper"/>
|
||||
<label name="confirmation_date"/>
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
<field name="entry"/>
|
||||
<field name="party"/>
|
||||
<field name="analysis_origin"/>
|
||||
<field name="state"/>
|
||||
<field name="analysis"/>
|
||||
<field name="laboratory"/>
|
||||
<field name="method"/>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0"?>
|
||||
<tree>
|
||||
<field name="number"/>
|
||||
<field name="number" icon="icon"/>
|
||||
<field name="date" widget="date"/>
|
||||
<field name="date" widget="time" string="Hora"/>
|
||||
<field name="create_date2" widget="date"/>
|
||||
|
|
|
@ -50,6 +50,10 @@
|
|||
<field name="shared"/>
|
||||
<label name="current_location"/>
|
||||
<field name="current_location"/>
|
||||
<field name="special_type" invisible="1" colspan="4"/>
|
||||
<field name="cie_fraction_type_available" invisible="1" colspan="4"/>
|
||||
<label name="cie_fraction_type"/>
|
||||
<field name="cie_fraction_type"/>
|
||||
<label name="entry_state"/>
|
||||
<field name="entry_state"/>
|
||||
</page>
|
||||
|
@ -64,6 +68,52 @@
|
|||
<field name="services" colspan="4" mode="tree,form"
|
||||
view_ids="lims.lims_service2_view_list,lims.lims_service_view_form"/>
|
||||
</page>
|
||||
<page string="Control" id="con">
|
||||
<label name="con_type"/>
|
||||
<field name="con_type"/>
|
||||
<label name="con_original_fraction"/>
|
||||
<field name="con_original_fraction"/>
|
||||
</page>
|
||||
<page string="BMZ" id="bmz">
|
||||
<label name="bmz_type"/>
|
||||
<field name="bmz_type"/>
|
||||
<label name="bmz_original_fraction"/>
|
||||
<field name="bmz_original_fraction"/>
|
||||
<label name="bmz_product_type"/>
|
||||
<field name="bmz_product_type"/>
|
||||
<label name="bmz_matrix"/>
|
||||
<field name="bmz_matrix"/>
|
||||
</page>
|
||||
<page string="RM" id="rm">
|
||||
<label name="rm_type"/>
|
||||
<field name="rm_type"/>
|
||||
<label name="rm_original_fraction"/>
|
||||
<field name="rm_original_fraction"/>
|
||||
<label name="rm_product_type"/>
|
||||
<field name="rm_product_type"/>
|
||||
<label name="rm_matrix"/>
|
||||
<field name="rm_matrix"/>
|
||||
</page>
|
||||
<page string="BRE" id="bre">
|
||||
<label name="bre_product_type"/>
|
||||
<field name="bre_product_type"/>
|
||||
<label name="bre_matrix"/>
|
||||
<field name="bre_matrix"/>
|
||||
<field name="bre_reagents" colspan="4"/>
|
||||
</page>
|
||||
<page string="MRT" id="mrt">
|
||||
<label name="mrt_product_type"/>
|
||||
<field name="mrt_product_type"/>
|
||||
<label name="mrt_matrix"/>
|
||||
<field name="mrt_matrix"/>
|
||||
</page>
|
||||
<page string="CIE" id="cie">
|
||||
<label name="cie_original_fraction"/>
|
||||
<field name="cie_original_fraction"/>
|
||||
<group colspan="2" id="buttons">
|
||||
<button name="load_services" string="Load Services"/>
|
||||
</group>
|
||||
</page>
|
||||
<page string="Comments" id="comments">
|
||||
<separator string="Comments" colspan="4" id="comments"/>
|
||||
<field name="comments" colspan="4"/>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0"?>
|
||||
<tree>
|
||||
<field name="number"/>
|
||||
<field name="number" icon="icon"/>
|
||||
<field name="create_date2" widget="date"/>
|
||||
<field name="create_date2" widget="time" string="Time"/>
|
||||
<field name="sample"/>
|
||||
|
|
|
@ -10,6 +10,14 @@
|
|||
</group>
|
||||
<label name="requalify"/>
|
||||
<field name="requalify"/>
|
||||
<label name="default_package_type"/>
|
||||
<field name="default_package_type"/>
|
||||
<label name="default_fraction_state"/>
|
||||
<field name="default_fraction_state"/>
|
||||
<label name="plannable"/>
|
||||
<field name="plannable"/>
|
||||
<label name="cie_fraction_type"/>
|
||||
<field name="cie_fraction_type"/>
|
||||
<label name="control_charts"/>
|
||||
<field name="control_charts"/>
|
||||
<label name="report"/>
|
||||
|
|
|
@ -4,6 +4,8 @@
|
|||
<field name="description"/>
|
||||
<field name="max_storage_time"/>
|
||||
<field name="requalify"/>
|
||||
<field name="plannable"/>
|
||||
<field name="cie_fraction_type"/>
|
||||
<field name="control_charts"/>
|
||||
<field name="report"/>
|
||||
</tree>
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
<tree>
|
||||
<field name="professional"/>
|
||||
<field name="method"/>
|
||||
<field name="determination"/>
|
||||
<field name="state"/>
|
||||
<field name="type"/>
|
||||
</tree>
|
|
@ -12,5 +12,7 @@
|
|||
<field name="related_location"/>
|
||||
<label name="section"/>
|
||||
<field name="section"/>
|
||||
<label name="headquarters"/>
|
||||
<field name="headquarters"/>
|
||||
<field name="cv_corrections" colspan="4"/>
|
||||
</form>
|
||||
|
|
|
@ -5,4 +5,5 @@
|
|||
<field name="default_laboratory_professional"/>
|
||||
<field name="default_signer"/>
|
||||
<field name="related_location"/>
|
||||
<field name="headquarters"/>
|
||||
</tree>
|
||||
|
|
|
@ -7,6 +7,8 @@
|
|||
<label name="role"/>
|
||||
<field name="role"/>
|
||||
<newline/>
|
||||
<field name="methods" colspan="4"/>
|
||||
<newline/>
|
||||
<group colspan="4" yfill="1" string="Signature" id="signature">
|
||||
<field xfill="0" xexpand="1" name="signature" height="200" width="200" widget="image"/>
|
||||
</group>
|
||||
|
|
|
@ -28,6 +28,9 @@
|
|||
<field name="initial_concentration"/>
|
||||
<label name="final_concentration"/>
|
||||
<field name="final_concentration"/>
|
||||
<label name="planification"/>
|
||||
<field name="planification"/>
|
||||
<field name="controls" colspan="4"/>
|
||||
<field name="laboratory_professionals" colspan="4"/>
|
||||
<label name="initial_unit"/>
|
||||
<field name="initial_unit"/>
|
||||
|
|
|
@ -21,4 +21,6 @@
|
|||
<field name="final_unit"/>
|
||||
<field name="literal_result"/>
|
||||
<field name="comments"/>
|
||||
<field name="product_type"/>
|
||||
<field name="matrix"/>
|
||||
</tree>
|
||||
|
|
|
@ -14,6 +14,8 @@
|
|||
<field name="report_date"/>
|
||||
<field name="initial_concentration"/>
|
||||
<field name="final_concentration"/>
|
||||
<field name="planification"/>
|
||||
<field name="controls"/>
|
||||
<field name="laboratory_professionals"/>
|
||||
<field name="initial_unit"/>
|
||||
<field name="final_unit"/>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0"?>
|
||||
<tree>
|
||||
<field name="fraction"/>
|
||||
<field name="fraction" icon="icon"/>
|
||||
<field name="party_code"/>
|
||||
<field name="product_type"/>
|
||||
<field name="matrix"/>
|
||||
|
|
|
@ -7,10 +7,6 @@
|
|||
<label name="email"/>
|
||||
<field name="email"/>
|
||||
<group col="12" colspan="6" id="entry_contacts">
|
||||
<label name="invoice_contact"/>
|
||||
<field name="invoice_contact"/>
|
||||
<label name="invoice_contact_default"/>
|
||||
<field name="invoice_contact_default"/>
|
||||
<label name="report_contact"/>
|
||||
<field name="report_contact"/>
|
||||
<label name="report_contact_default"/>
|
||||
|
@ -19,6 +15,10 @@
|
|||
<field name="acknowledgment_contact"/>
|
||||
<label name="acknowledgment_contact_default"/>
|
||||
<field name="acknowledgment_contact_default"/>
|
||||
<label name="invoice_contact"/>
|
||||
<field name="invoice_contact"/>
|
||||
<label name="invoice_contact_default"/>
|
||||
<field name="invoice_contact_default"/>
|
||||
</group>
|
||||
</xpath>
|
||||
</data>
|
||||
|
|
|
@ -4,11 +4,11 @@
|
|||
expr="/tree/field[@name='subdivision']"
|
||||
position="after">
|
||||
<field name="email"/>
|
||||
<field name="invoice_contact"/>
|
||||
<field name="invoice_contact_default"/>
|
||||
<field name="report_contact"/>
|
||||
<field name="report_contact_default"/>
|
||||
<field name="acknowledgment_contact"/>
|
||||
<field name="acknowledgment_contact_default"/>
|
||||
<field name="invoice_contact"/>
|
||||
<field name="invoice_contact_default"/>
|
||||
</xpath>
|
||||
</data>
|
||||
|
|
|
@ -5,6 +5,6 @@
|
|||
<label name="date_to"/>
|
||||
<field name="date_to"/>
|
||||
<field name="analysis" colspan="4" mode="tree,form"
|
||||
view_ids="lims_planification.lims_analysis_pending_view_list,lims.lims_analysis_view_form"/>
|
||||
view_ids="lims.lims_analysis_pending_view_list,lims.lims_analysis_view_form"/>
|
||||
<field name="laboratory" invisible="1"/>
|
||||
</form>
|
|
@ -10,11 +10,11 @@
|
|||
<field name="product_type"/>
|
||||
<label name="matrix"/>
|
||||
<field name="matrix"/>
|
||||
<label name="repetitions"/>
|
||||
<field name="repetitions"/>
|
||||
<label name="label"/>
|
||||
<field name="label"/>
|
||||
<label name="concentration_level"/>
|
||||
<field name="concentration_level"/>
|
||||
<label name="generate_repetition"/>
|
||||
<field name="generate_repetition"/>
|
||||
<field name="planification" invisible="1"/>
|
||||
</form>
|