changeset 9b8ef75eb991 in modules/stock:default
details: https://hg.tryton.org/modules/stock?cmd=changeset&node=9b8ef75eb991
description:
        Support warehouse pickup

        issue11574
        review419411003
diffstat:

 CHANGELOG                         |    1 +
 __init__.py                       |    5 +-
 delivery_note.fodt                |  317 +++++++++++++++++++------------------
 location.py                       |   93 +---------
 location.xml                      |    7 -
 party.py                          |  117 +++++++++++++-
 party.xml                         |    6 +
 shipment.py                       |   52 +++++-
 view/location_form.xml            |    4 +-
 view/party_form.xml               |    3 +
 view/shipment_out_return_form.xml |    4 +-
 view/shipment_out_return_tree.xml |    2 +-
 12 files changed, 351 insertions(+), 260 deletions(-)

diffs (1050 lines):

diff -r 11631a8664bf -r 9b8ef75eb991 CHANGELOG
--- a/CHANGELOG Thu Sep 08 13:19:52 2022 +0200
+++ b/CHANGELOG Sat Sep 10 18:34:29 2022 +0200
@@ -1,3 +1,4 @@
+* Support warehouse pickup
 * Allow resetting packed customer shipments
 * Allow grouping by date products by location
 * Ignore consumable products when inactivating locations
diff -r 11631a8664bf -r 9b8ef75eb991 __init__.py
--- a/__init__.py       Thu Sep 08 13:19:52 2022 +0200
+++ b/__init__.py       Sat Sep 10 18:34:29 2022 +0200
@@ -15,8 +15,6 @@
     Pool.register(
         location.Location,
         location.WarehouseWasteLocation,
-        location.Party,
-        location.PartyLocation,
         location.ProductsByLocationsContext,
         location.ProductsByLocations,
         location.LocationLeadTime,
@@ -27,6 +25,9 @@
         shipment.ShipmentOutReturn,
         shipment.ShipmentInternal,
         shipment.AssignPartial,
+        party.Party,
+        party.PartyLocation,
+        party.PartyDeliveredToWarehouse,
         party.Address,
         party.ContactMechanism,
         period.Period,
diff -r 11631a8664bf -r 9b8ef75eb991 delivery_note.fodt
--- a/delivery_note.fodt        Thu Sep 08 13:19:52 2022 +0200
+++ b/delivery_note.fodt        Sat Sep 10 18:34:29 2022 +0200
@@ -1,128 +1,137 @@
 <?xml version="1.0" encoding="UTF-8"?>
 
-<office:document xmlns:officeooo="http://openoffice.org/2009/office"; 
xmlns:grddl="http://www.w3.org/2003/g/data-view#"; 
xmlns:xhtml="http://www.w3.org/1999/xhtml"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xmlns:xsd="http://www.w3.org/2001/XMLSchema"; 
xmlns:xforms="http://www.w3.org/2002/xforms"; 
xmlns:dom="http://www.w3.org/2001/xml-events"; 
xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" 
xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" 
xmlns:math="http://www.w3.org/1998/Math/MathML"; 
xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" 
xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" 
xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" 
xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" 
xmlns:formx="urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0"
 xmlns:dc="http://purl.org/dc/elements/1.1/"; 
xmlns:ooo="http://openoffice.org/2004/office"; 
xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0"
 xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" 
xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" 
xmlns:field="urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0" 
xmlns:xlink="http://www.w3.org/1999/xlink"; 
xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" 
xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" 
xmlns:calcext="urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0"
 xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" 
xmlns:of="urn:oasis:names:tc:opendocument:xmlns:of:1.2" 
xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" 
xmlns:rpt="http://openoffice.org/2005/report"; 
xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" 
xmlns:css3t="http://www.w3.org/TR/css3-text/"; 
xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" 
xmlns:ooow="http://openoffice.org/2004/writer"; 
xmlns:oooc="http://openoffice.org/2004/calc"; 
xmlns:tableooo="http://openoffice.org/2009/table"; 
xmlns:drawooo="http://openoffice.org/2010/draw"; office:version="1.2" 
office:mimetype="application/vnd.oasis.opendocument.text">
- <office:meta><meta:generator>LibreOffice/6.4.6.2$Linux_X86_64 
LibreOffice_project/40$Build-2</meta:generator><meta:creation-date>2008-06-07T15:29:02</meta:creation-date><dc:date>2009-03-26T18:33:13</dc:date><meta:editing-cycles>1</meta:editing-cycles><meta:editing-duration>PT0S</meta:editing-duration><meta:document-statistic
 meta:table-count="1" meta:image-count="0" meta:object-count="0" 
meta:page-count="2" meta:paragraph-count="27" meta:word-count="75" 
meta:character-count="1008" 
meta:non-whitespace-character-count="960"/><meta:user-defined meta:name="Info 
1"/><meta:user-defined meta:name="Info 2"/><meta:user-defined meta:name="Info 
3"/><meta:user-defined meta:name="Info 4"/></office:meta>
+<office:document xmlns:officeooo="http://openoffice.org/2009/office"; 
xmlns:css3t="http://www.w3.org/TR/css3-text/"; 
xmlns:grddl="http://www.w3.org/2003/g/data-view#"; 
xmlns:xhtml="http://www.w3.org/1999/xhtml"; 
xmlns:formx="urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xmlns:xsd="http://www.w3.org/2001/XMLSchema"; 
xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" 
xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" 
xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" 
xmlns:oooc="http://openoffice.org/2004/calc"; 
xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" 
xmlns:ooow="http://openoffice.org/2004/writer"; 
xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" 
xmlns:dc="http://purl.org/dc/elements/1.1/"; 
xmlns:rpt="http://openoffice.org/2005/report"; 
xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" 
xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" 
xmlns:xlink="http://www.w3.org/1999/xlink"; 
xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" 
xmlns:ooo="http://openoffice.org/2004/office"; 
xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" 
xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" 
xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" 
xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" 
xmlns:of="urn:oasis:names:tc:opendocument:xmlns:of:1.2" 
xmlns:calcext="urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0"
 xmlns:tableooo="http://openoffice.org/2009/table"; 
xmlns:drawooo="http://openoffice.org/2010/draw"; 
xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0"
 xmlns:dom="http://www.w3.org/2001/xml-events"; 
xmlns:field="urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0" 
xmlns:math="http://www.w3.org/1998/Math/MathML"; 
xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" 
xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" 
xmlns:xforms="http://www.w3.org/2002/xforms"; office:version="1.3" 
office:mimetype="application/vnd.oasis.opendocument.text">
+ <office:meta><meta:generator>LibreOffice/7.3.3.2$Linux_X86_64 
LibreOffice_project/30$Build-2</meta:generator><meta:creation-date>2008-06-07T15:29:02</meta:creation-date><dc:date>2009-03-26T18:33:13</dc:date><meta:editing-cycles>1</meta:editing-cycles><meta:editing-duration>PT0S</meta:editing-duration><meta:document-statistic
 meta:table-count="1" meta:image-count="0" meta:object-count="0" 
meta:page-count="2" meta:paragraph-count="28" meta:word-count="84" 
meta:character-count="1078" 
meta:non-whitespace-character-count="1022"/><meta:user-defined meta:name="Info 
1"/><meta:user-defined meta:name="Info 2"/><meta:user-defined meta:name="Info 
3"/><meta:user-defined meta:name="Info 4"/></office:meta>
  <office:settings>
   <config:config-item-set config:name="ooo:view-settings">
-   <config:config-item config:name="ViewAreaTop" 
config:type="long">28998</config:config-item>
+   <config:config-item config:name="ViewAreaTop" 
config:type="long">0</config:config-item>
    <config:config-item config:name="ViewAreaLeft" 
config:type="long">0</config:config-item>
-   <config:config-item config:name="ViewAreaWidth" 
config:type="long">26301</config:config-item>
-   <config:config-item config:name="ViewAreaHeight" 
config:type="long">24026</config:config-item>
+   <config:config-item config:name="ViewAreaWidth" 
config:type="long">48129</config:config-item>
+   <config:config-item config:name="ViewAreaHeight" 
config:type="long">23021</config:config-item>
    <config:config-item config:name="ShowRedlineChanges" 
config:type="boolean">true</config:config-item>
    <config:config-item config:name="InBrowseMode" 
config:type="boolean">false</config:config-item>
    <config:config-item-map-indexed config:name="Views">
     <config:config-item-map-entry>
      <config:config-item config:name="ViewId" 
config:type="string">view2</config:config-item>
-     <config:config-item config:name="ViewLeft" 
config:type="long">4651</config:config-item>
-     <config:config-item config:name="ViewTop" 
config:type="long">35512</config:config-item>
+     <config:config-item config:name="ViewLeft" 
config:type="long">37596</config:config-item>
+     <config:config-item config:name="ViewTop" 
config:type="long">8964</config:config-item>
      <config:config-item config:name="VisibleLeft" 
config:type="long">0</config:config-item>
-     <config:config-item config:name="VisibleTop" 
config:type="long">28998</config:config-item>
-     <config:config-item config:name="VisibleRight" 
config:type="long">26300</config:config-item>
-     <config:config-item config:name="VisibleBottom" 
config:type="long">53023</config:config-item>
+     <config:config-item config:name="VisibleTop" 
config:type="long">0</config:config-item>
+     <config:config-item config:name="VisibleRight" 
config:type="long">48128</config:config-item>
+     <config:config-item config:name="VisibleBottom" 
config:type="long">23019</config:config-item>
      <config:config-item config:name="ZoomType" 
config:type="short">0</config:config-item>
      <config:config-item config:name="ViewLayoutColumns" 
config:type="short">0</config:config-item>
      <config:config-item config:name="ViewLayoutBookMode" 
config:type="boolean">false</config:config-item>
      <config:config-item config:name="ZoomFactor" 
config:type="short">100</config:config-item>
      <config:config-item config:name="IsSelectedFrame" 
config:type="boolean">false</config:config-item>
+     <config:config-item config:name="KeepRatio" 
config:type="boolean">false</config:config-item>
      <config:config-item config:name="AnchoredTextOverflowLegacy" 
config:type="boolean">false</config:config-item>
     </config:config-item-map-entry>
    </config:config-item-map-indexed>
   </config:config-item-set>
   <config:config-item-set config:name="ooo:configuration-settings">
    <config:config-item config:name="PrintProspect" 
config:type="boolean">false</config:config-item>
+   <config:config-item config:name="PrintReversed" 
config:type="boolean">false</config:config-item>
+   <config:config-item config:name="PrintSingleJobs" 
config:type="boolean">false</config:config-item>
    <config:config-item config:name="PrintLeftPages" 
config:type="boolean">true</config:config-item>
+   <config:config-item config:name="PrintTables" 
config:type="boolean">true</config:config-item>
+   <config:config-item config:name="PrintControls" 
config:type="boolean">true</config:config-item>
    <config:config-item config:name="PrintPageBackground" 
config:type="boolean">true</config:config-item>
-   <config:config-item config:name="PrintControls" 
config:type="boolean">true</config:config-item>
+   <config:config-item config:name="PrintDrawings" 
config:type="boolean">true</config:config-item>
+   <config:config-item config:name="PrintBlackFonts" 
config:type="boolean">false</config:config-item>
    <config:config-item config:name="PrintAnnotationMode" 
config:type="short">0</config:config-item>
-   <config:config-item config:name="PrintGraphics" 
config:type="boolean">true</config:config-item>
-   <config:config-item config:name="PrintRightPages" 
config:type="boolean">true</config:config-item>
-   <config:config-item config:name="PrintFaxName" config:type="string"/>
-   <config:config-item config:name="PrintPaperFromSetup" 
config:type="boolean">false</config:config-item>
    <config:config-item config:name="PrintTextPlaceholder" 
config:type="boolean">false</config:config-item>
-   <config:config-item config:name="HeaderSpacingBelowLastPara" 
config:type="boolean">false</config:config-item>
-   <config:config-item config:name="ContinuousEndnotes" 
config:type="boolean">false</config:config-item>
+   <config:config-item config:name="ProtectFields" 
config:type="boolean">false</config:config-item>
+   <config:config-item config:name="ProtectBookmarks" 
config:type="boolean">false</config:config-item>
    <config:config-item config:name="EmptyDbFieldHidesPara" 
config:type="boolean">false</config:config-item>
+   <config:config-item config:name="DisableOffPagePositioning" 
config:type="boolean">false</config:config-item>
+   <config:config-item config:name="SubtractFlysAnchoredAtFlys" 
config:type="boolean">true</config:config-item>
+   <config:config-item config:name="PropLineSpacingShrinksFirstLine" 
config:type="boolean">false</config:config-item>
    <config:config-item config:name="ApplyParagraphMarkFormatToNumbering" 
config:type="boolean">false</config:config-item>
-   <config:config-item config:name="PrintReversed" 
config:type="boolean">false</config:config-item>
-   <config:config-item config:name="TabOverMargin" 
config:type="boolean">false</config:config-item>
+   <config:config-item config:name="GutterAtTop" 
config:type="boolean">false</config:config-item>
+   <config:config-item config:name="TreatSingleColumnBreakAsPageBreak" 
config:type="boolean">false</config:config-item>
+   <config:config-item config:name="EmbedSystemFonts" 
config:type="boolean">false</config:config-item>
+   <config:config-item config:name="EmbedComplexScriptFonts" 
config:type="boolean">true</config:config-item>
    <config:config-item config:name="EmbedAsianScriptFonts" 
config:type="boolean">true</config:config-item>
    <config:config-item config:name="EmbedLatinScriptFonts" 
config:type="boolean">true</config:config-item>
-   <config:config-item config:name="DisableOffPagePositioning" 
config:type="boolean">false</config:config-item>
    <config:config-item config:name="EmbedOnlyUsedFonts" 
config:type="boolean">false</config:config-item>
+   <config:config-item config:name="ContinuousEndnotes" 
config:type="boolean">false</config:config-item>
    <config:config-item config:name="EmbedFonts" 
config:type="boolean">false</config:config-item>
-   <config:config-item config:name="SurroundTextWrapSmall" 
config:type="boolean">false</config:config-item>
-   <config:config-item config:name="BackgroundParaOverDrawings" 
config:type="boolean">false</config:config-item>
    <config:config-item config:name="ClippedPictures" 
config:type="boolean">false</config:config-item>
    <config:config-item config:name="FloattableNomargins" 
config:type="boolean">false</config:config-item>
    <config:config-item config:name="UnbreakableNumberings" 
config:type="boolean">false</config:config-item>
-   <config:config-item config:name="EmbedSystemFonts" 
config:type="boolean">false</config:config-item>
-   <config:config-item config:name="TabOverflow" 
config:type="boolean">false</config:config-item>
-   <config:config-item config:name="PrintTables" 
config:type="boolean">true</config:config-item>
-   <config:config-item config:name="PrintSingleJobs" 
config:type="boolean">false</config:config-item>
-   <config:config-item config:name="SmallCapsPercentage66" 
config:type="boolean">true</config:config-item>
-   <config:config-item config:name="CollapseEmptyCellPara" 
config:type="boolean">true</config:config-item>
-   <config:config-item config:name="RsidRoot" 
config:type="int">1813180</config:config-item>
-   <config:config-item config:name="IsLabelDocument" 
config:type="boolean">false</config:config-item>
-   <config:config-item config:name="PrinterName" config:type="string"/>
-   <config:config-item config:name="OutlineLevelYieldsNumbering" 
config:type="boolean">false</config:config-item>
+   <config:config-item config:name="HeaderSpacingBelowLastPara" 
config:type="boolean">false</config:config-item>
+   <config:config-item config:name="AllowPrintJobCancel" 
config:type="boolean">true</config:config-item>
+   <config:config-item config:name="UseOldPrinterMetrics" 
config:type="boolean">false</config:config-item>
+   <config:config-item config:name="TabOverMargin" 
config:type="boolean">false</config:config-item>
+   <config:config-item config:name="TabsRelativeToIndent" 
config:type="boolean">true</config:config-item>
+   <config:config-item config:name="UseOldNumbering" 
config:type="boolean">false</config:config-item>
+   <config:config-item config:name="InvertBorderSpacing" 
config:type="boolean">false</config:config-item>
+   <config:config-item config:name="PrintPaperFromSetup" 
config:type="boolean">false</config:config-item>
    <config:config-item config:name="UpdateFromTemplate" 
config:type="boolean">true</config:config-item>
-   <config:config-item config:name="PrintBlackFonts" 
config:type="boolean">false</config:config-item>
-   <config:config-item config:name="TableRowKeep" 
config:type="boolean">false</config:config-item>
-   <config:config-item config:name="IgnoreTabsAndBlanksForLineCalculation" 
config:type="boolean">false</config:config-item>
-   <config:config-item config:name="EmbedComplexScriptFonts" 
config:type="boolean">true</config:config-item>
-   <config:config-item config:name="UseOldPrinterMetrics" 
config:type="boolean">false</config:config-item>
-   <config:config-item config:name="InvertBorderSpacing" 
config:type="boolean">false</config:config-item>
+   <config:config-item config:name="CurrentDatabaseCommandType" 
config:type="int">0</config:config-item>
+   <config:config-item config:name="LinkUpdateMode" 
config:type="short">1</config:config-item>
+   <config:config-item config:name="AddParaSpacingToTableCells" 
config:type="boolean">true</config:config-item>
+   <config:config-item config:name="FrameAutowidthWithMorePara" 
config:type="boolean">false</config:config-item>
+   <config:config-item config:name="CurrentDatabaseCommand" 
config:type="string"/>
+   <config:config-item config:name="PrinterIndependentLayout" 
config:type="string">high-resolution</config:config-item>
+   <config:config-item config:name="ApplyUserData" 
config:type="boolean">false</config:config-item>
+   <config:config-item config:name="PrintFaxName" config:type="string"/>
+   <config:config-item config:name="CurrentDatabaseDataSource" 
config:type="string"/>
+   <config:config-item config:name="ClipAsCharacterAnchoredWriterFlyFrames" 
config:type="boolean">false</config:config-item>
+   <config:config-item config:name="IsKernAsianPunctuation" 
config:type="boolean">false</config:config-item>
+   <config:config-item config:name="SaveThumbnail" 
config:type="boolean">true</config:config-item>
+   <config:config-item config:name="UseFormerTextWrapping" 
config:type="boolean">false</config:config-item>
+   <config:config-item config:name="AddExternalLeading" 
config:type="boolean">true</config:config-item>
+   <config:config-item config:name="AddParaTableSpacing" 
config:type="boolean">true</config:config-item>
+   <config:config-item config:name="StylesNoDefault" 
config:type="boolean">false</config:config-item>
+   <config:config-item config:name="ChartAutoUpdate" 
config:type="boolean">true</config:config-item>
+   <config:config-item config:name="PrinterSetup" config:type="base64Binary"/>
+   <config:config-item config:name="AddParaTableSpacingAtStart" 
config:type="boolean">true</config:config-item>
+   <config:config-item config:name="Rsid" 
config:type="int">2929175</config:config-item>
+   <config:config-item config:name="EmbeddedDatabaseName" 
config:type="string"/>
+   <config:config-item config:name="FieldAutoUpdate" 
config:type="boolean">true</config:config-item>
+   <config:config-item config:name="OutlineLevelYieldsNumbering" 
config:type="boolean">false</config:config-item>
+   <config:config-item config:name="FootnoteInColumnToPageEnd" 
config:type="boolean">true</config:config-item>
+   <config:config-item config:name="AlignTabStopPosition" 
config:type="boolean">true</config:config-item>
+   <config:config-item config:name="CharacterCompressionType" 
config:type="short">0</config:config-item>
+   <config:config-item config:name="PrinterName" config:type="string"/>
    <config:config-item config:name="SaveGlobalDocumentLinks" 
config:type="boolean">false</config:config-item>
-   <config:config-item config:name="TabsRelativeToIndent" 
config:type="boolean">true</config:config-item>
-   <config:config-item config:name="Rsid" 
config:type="int">2809848</config:config-item>
-   <config:config-item config:name="EmbeddedDatabaseName" 
config:type="string"/>
-   <config:config-item config:name="SaveThumbnail" 
config:type="boolean">true</config:config-item>
+   <config:config-item config:name="PrinterPaperFromSetup" 
config:type="boolean">false</config:config-item>
+   <config:config-item config:name="UseFormerLineSpacing" 
config:type="boolean">false</config:config-item>
+   <config:config-item config:name="AddParaLineSpacingToTableCells" 
config:type="boolean">false</config:config-item>
+   <config:config-item config:name="UseFormerObjectPositioning" 
config:type="boolean">false</config:config-item>
+   <config:config-item config:name="PrintGraphics" 
config:type="boolean">true</config:config-item>
+   <config:config-item config:name="SurroundTextWrapSmall" 
config:type="boolean">false</config:config-item>
+   <config:config-item config:name="ConsiderTextWrapOnObjPos" 
config:type="boolean">false</config:config-item>
+   <config:config-item config:name="MsWordCompTrailingBlanks" 
config:type="boolean">false</config:config-item>
+   <config:config-item config:name="TabAtLeftIndentForParagraphsInList" 
config:type="boolean">false</config:config-item>
+   <config:config-item config:name="PrintRightPages" 
config:type="boolean">true</config:config-item>
+   <config:config-item config:name="TabOverSpacing" 
config:type="boolean">false</config:config-item>
+   <config:config-item config:name="IgnoreFirstLineIndentInNumbering" 
config:type="boolean">false</config:config-item>
+   <config:config-item config:name="RedlineProtectionKey" 
config:type="base64Binary"/>
+   <config:config-item config:name="DoNotJustifyLinesWithManualBreak" 
config:type="boolean">false</config:config-item>
    <config:config-item config:name="PrintProspectRTL" 
config:type="boolean">false</config:config-item>
    <config:config-item config:name="PrintEmptyPages" 
config:type="boolean">true</config:config-item>
-   <config:config-item config:name="ApplyUserData" 
config:type="boolean">false</config:config-item>
-   <config:config-item config:name="PrintHiddenText" 
config:type="boolean">false</config:config-item>
-   <config:config-item config:name="AddParaTableSpacingAtStart" 
config:type="boolean">true</config:config-item>
-   <config:config-item config:name="FieldAutoUpdate" 
config:type="boolean">true</config:config-item>
-   <config:config-item config:name="UseOldNumbering" 
config:type="boolean">false</config:config-item>
-   <config:config-item config:name="AddParaTableSpacing" 
config:type="boolean">true</config:config-item>
-   <config:config-item config:name="MsWordCompTrailingBlanks" 
config:type="boolean">false</config:config-item>
-   <config:config-item config:name="IgnoreFirstLineIndentInNumbering" 
config:type="boolean">false</config:config-item>
-   <config:config-item config:name="PrinterPaperFromSetup" 
config:type="boolean">false</config:config-item>
-   <config:config-item config:name="CharacterCompressionType" 
config:type="short">0</config:config-item>
-   <config:config-item config:name="SaveVersionOnClose" 
config:type="boolean">false</config:config-item>
-   <config:config-item config:name="ChartAutoUpdate" 
config:type="boolean">true</config:config-item>
-   <config:config-item config:name="PrinterIndependentLayout" 
config:type="string">high-resolution</config:config-item>
-   <config:config-item config:name="IsKernAsianPunctuation" 
config:type="boolean">false</config:config-item>
-   <config:config-item config:name="UseFormerObjectPositioning" 
config:type="boolean">false</config:config-item>
-   <config:config-item config:name="TreatSingleColumnBreakAsPageBreak" 
config:type="boolean">false</config:config-item>
-   <config:config-item config:name="MathBaselineAlignment" 
config:type="boolean">false</config:config-item>
+   <config:config-item config:name="DoNotResetParaAttrsForNumFont" 
config:type="boolean">false</config:config-item>
    <config:config-item config:name="AddFrameOffsets" 
config:type="boolean">false</config:config-item>
-   <config:config-item config:name="AddVerticalFrameOffsets" 
config:type="boolean">false</config:config-item>
-   <config:config-item config:name="SubtractFlysAnchoredAtFlys" 
config:type="boolean">true</config:config-item>
-   <config:config-item config:name="AddParaSpacingToTableCells" 
config:type="boolean">true</config:config-item>
-   <config:config-item config:name="AddExternalLeading" 
config:type="boolean">true</config:config-item>
-   <config:config-item config:name="CurrentDatabaseDataSource" 
config:type="string"/>
-   <config:config-item config:name="AllowPrintJobCancel" 
config:type="boolean">true</config:config-item>
-   <config:config-item config:name="ProtectForm" 
config:type="boolean">false</config:config-item>
-   <config:config-item config:name="UseFormerLineSpacing" 
config:type="boolean">false</config:config-item>
-   <config:config-item config:name="PrintDrawings" 
config:type="boolean">true</config:config-item>
-   <config:config-item config:name="UseFormerTextWrapping" 
config:type="boolean">false</config:config-item>
-   <config:config-item config:name="UnxForceZeroExtLeading" 
config:type="boolean">false</config:config-item>
-   <config:config-item config:name="TabAtLeftIndentForParagraphsInList" 
config:type="boolean">false</config:config-item>
-   <config:config-item config:name="RedlineProtectionKey" 
config:type="base64Binary"/>
-   <config:config-item config:name="PropLineSpacingShrinksFirstLine" 
config:type="boolean">false</config:config-item>
-   <config:config-item config:name="ConsiderTextWrapOnObjPos" 
config:type="boolean">false</config:config-item>
-   <config:config-item config:name="StylesNoDefault" 
config:type="boolean">false</config:config-item>
-   <config:config-item config:name="LinkUpdateMode" 
config:type="short">1</config:config-item>
-   <config:config-item config:name="AlignTabStopPosition" 
config:type="boolean">true</config:config-item>
-   <config:config-item config:name="DoNotJustifyLinesWithManualBreak" 
config:type="boolean">false</config:config-item>
-   <config:config-item config:name="DoNotResetParaAttrsForNumFont" 
config:type="boolean">false</config:config-item>
-   <config:config-item config:name="CurrentDatabaseCommandType" 
config:type="int">0</config:config-item>
+   <config:config-item config:name="IgnoreTabsAndBlanksForLineCalculation" 
config:type="boolean">false</config:config-item>
    <config:config-item config:name="LoadReadonly" 
config:type="boolean">false</config:config-item>
    <config:config-item config:name="DoNotCaptureDrawObjsOnPage" 
config:type="boolean">false</config:config-item>
-   <config:config-item config:name="CurrentDatabaseCommand" 
config:type="string"/>
-   <config:config-item config:name="PrinterSetup" config:type="base64Binary"/>
-   <config:config-item config:name="ClipAsCharacterAnchoredWriterFlyFrames" 
config:type="boolean">false</config:config-item>
+   <config:config-item config:name="AddVerticalFrameOffsets" 
config:type="boolean">false</config:config-item>
+   <config:config-item config:name="UnxForceZeroExtLeading" 
config:type="boolean">false</config:config-item>
+   <config:config-item config:name="IsLabelDocument" 
config:type="boolean">false</config:config-item>
+   <config:config-item config:name="TableRowKeep" 
config:type="boolean">false</config:config-item>
+   <config:config-item config:name="RsidRoot" 
config:type="int">1813180</config:config-item>
+   <config:config-item config:name="PrintHiddenText" 
config:type="boolean">false</config:config-item>
+   <config:config-item config:name="ProtectForm" 
config:type="boolean">false</config:config-item>
+   <config:config-item config:name="MsWordCompMinLineHeightByFly" 
config:type="boolean">false</config:config-item>
+   <config:config-item config:name="BackgroundParaOverDrawings" 
config:type="boolean">false</config:config-item>
+   <config:config-item config:name="SaveVersionOnClose" 
config:type="boolean">false</config:config-item>
+   <config:config-item config:name="MathBaselineAlignment" 
config:type="boolean">false</config:config-item>
+   <config:config-item config:name="SmallCapsPercentage66" 
config:type="boolean">true</config:config-item>
+   <config:config-item config:name="CollapseEmptyCellPara" 
config:type="boolean">true</config:config-item>
+   <config:config-item config:name="TabOverflow" 
config:type="boolean">false</config:config-item>
   </config:config-item-set>
  </office:settings>
  <office:scripts>
@@ -131,15 +140,15 @@
   </office:script>
  </office:scripts>
  <office:font-face-decls>
-  <style:font-face style:name="StarSymbol" svg:font-family="StarSymbol"/>
-  <style:font-face style:name="Liberation Serif2" 
svg:font-family="&apos;Liberation Serif&apos;" 
style:font-family-generic="roman" style:font-pitch="variable"/>
-  <style:font-face style:name="Liberation Serif" 
svg:font-family="&apos;Liberation Serif&apos;" style:font-adornments="Bold" 
style:font-family-generic="roman" style:font-pitch="variable"/>
-  <style:font-face style:name="Liberation Serif1" 
svg:font-family="&apos;Liberation Serif&apos;" style:font-adornments="Regular" 
style:font-family-generic="roman" style:font-pitch="variable"/>
-  <style:font-face style:name="Thorndale AMT" svg:font-family="&apos;Thorndale 
AMT&apos;" style:font-family-generic="roman" style:font-pitch="variable"/>
-  <style:font-face style:name="Liberation Sans1" 
svg:font-family="&apos;Liberation Sans&apos;" style:font-family-generic="swiss" 
style:font-pitch="variable"/>
-  <style:font-face style:name="Liberation Sans" 
svg:font-family="&apos;Liberation Sans&apos;" style:font-adornments="Regular" 
style:font-family-generic="swiss" style:font-pitch="variable"/>
   <style:font-face style:name="Andale Sans UI" svg:font-family="&apos;Andale 
Sans UI&apos;" style:font-family-generic="system" style:font-pitch="variable"/>
   <style:font-face style:name="DejaVu Sans" svg:font-family="&apos;DejaVu 
Sans&apos;" style:font-family-generic="system" style:font-pitch="variable"/>
+  <style:font-face style:name="Liberation Sans" 
svg:font-family="&apos;Liberation Sans&apos;" style:font-family-generic="swiss" 
style:font-pitch="variable"/>
+  <style:font-face style:name="Liberation Sans1" 
svg:font-family="&apos;Liberation Sans&apos;" style:font-adornments="Regular" 
style:font-family-generic="swiss" style:font-pitch="variable"/>
+  <style:font-face style:name="Liberation Serif" 
svg:font-family="&apos;Liberation Serif&apos;" 
style:font-family-generic="roman" style:font-pitch="variable"/>
+  <style:font-face style:name="Liberation Serif1" 
svg:font-family="&apos;Liberation Serif&apos;" style:font-adornments="Bold" 
style:font-family-generic="roman" style:font-pitch="variable"/>
+  <style:font-face style:name="Liberation Serif2" 
svg:font-family="&apos;Liberation Serif&apos;" style:font-adornments="Regular" 
style:font-family-generic="roman" style:font-pitch="variable"/>
+  <style:font-face style:name="StarSymbol" svg:font-family="StarSymbol"/>
+  <style:font-face style:name="Thorndale AMT" svg:font-family="&apos;Thorndale 
AMT&apos;" style:font-family-generic="roman" style:font-pitch="variable"/>
  </office:font-face-decls>
  <office:styles>
   <style:default-style style:family="graphic">
@@ -147,11 +156,11 @@
    <style:paragraph-properties style:text-autospace="ideograph-alpha" 
style:line-break="strict" style:writing-mode="lr-tb" 
style:font-independent-line-spacing="false">
     <style:tab-stops/>
    </style:paragraph-properties>
-   <style:text-properties style:use-window-font-color="true" 
style:font-name="Thorndale AMT" fo:font-size="12pt" fo:language="en" 
fo:country="US" style:letter-kerning="true" style:font-name-asian="Andale Sans 
UI" style:font-size-asian="10.5pt" style:language-asian="zxx" 
style:country-asian="none" style:font-name-complex="Andale Sans UI" 
style:font-size-complex="12pt" style:language-complex="zxx" 
style:country-complex="none"/>
+   <style:text-properties style:use-window-font-color="true" 
loext:opacity="0%" style:font-name="Thorndale AMT" fo:font-size="12pt" 
fo:language="en" fo:country="US" style:letter-kerning="true" 
style:font-name-asian="Andale Sans UI" style:font-size-asian="10.5pt" 
style:language-asian="zxx" style:country-asian="none" 
style:font-name-complex="Andale Sans UI" style:font-size-complex="12pt" 
style:language-complex="zxx" style:country-complex="none"/>
   </style:default-style>
   <style:default-style style:family="paragraph">
    <style:paragraph-properties fo:hyphenation-ladder-count="no-limit" 
style:text-autospace="ideograph-alpha" style:punctuation-wrap="hanging" 
style:line-break="strict" style:tab-stop-distance="1.251cm" 
style:writing-mode="lr-tb"/>
-   <style:text-properties style:use-window-font-color="true" 
style:font-name="Thorndale AMT" fo:font-size="12pt" fo:language="en" 
fo:country="US" style:letter-kerning="true" style:font-name-asian="Andale Sans 
UI" style:font-size-asian="10.5pt" style:language-asian="zxx" 
style:country-asian="none" style:font-name-complex="Andale Sans UI" 
style:font-size-complex="12pt" style:language-complex="zxx" 
style:country-complex="none" fo:hyphenate="false" 
fo:hyphenation-remain-char-count="2" fo:hyphenation-push-char-count="2" 
loext:hyphenation-no-caps="false"/>
+   <style:text-properties style:use-window-font-color="true" 
loext:opacity="0%" style:font-name="Thorndale AMT" fo:font-size="12pt" 
fo:language="en" fo:country="US" style:letter-kerning="true" 
style:font-name-asian="Andale Sans UI" style:font-size-asian="10.5pt" 
style:language-asian="zxx" style:country-asian="none" 
style:font-name-complex="Andale Sans UI" style:font-size-complex="12pt" 
style:language-complex="zxx" style:country-complex="none" fo:hyphenate="false" 
fo:hyphenation-remain-char-count="2" fo:hyphenation-push-char-count="2" 
loext:hyphenation-no-caps="false"/>
   </style:default-style>
   <style:default-style style:family="table">
    <style:table-properties table:border-model="collapsing"/>
@@ -160,21 +169,21 @@
    <style:table-row-properties fo:keep-together="auto"/>
   </style:default-style>
   <style:style style:name="Standard" style:family="paragraph" 
style:class="text">
-   <style:text-properties style:font-name="Liberation Sans" 
fo:font-family="&apos;Liberation Sans&apos;" style:font-style-name="Regular" 
style:font-family-generic="swiss" style:font-pitch="variable" 
style:font-size-asian="10.5pt"/>
+   <style:text-properties style:font-name="Liberation Sans1" 
fo:font-family="&apos;Liberation Sans&apos;" style:font-style-name="Regular" 
style:font-family-generic="swiss" style:font-pitch="variable" 
style:font-size-asian="10.5pt"/>
   </style:style>
   <style:style style:name="Heading" style:family="paragraph" 
style:parent-style-name="Standard" style:next-style-name="Text_20_body" 
style:class="text">
-   <style:paragraph-properties fo:margin-top="0.423cm" 
fo:margin-bottom="0.212cm" loext:contextual-spacing="false" 
fo:keep-with-next="always"/>
-   <style:text-properties style:font-name="Liberation Serif1" 
fo:font-family="&apos;Liberation Serif&apos;" style:font-style-name="Regular" 
style:font-family-generic="roman" style:font-pitch="variable" 
fo:font-size="16pt" style:font-name-asian="DejaVu Sans" 
style:font-family-asian="&apos;DejaVu Sans&apos;" 
style:font-family-generic-asian="system" style:font-pitch-asian="variable" 
style:font-size-asian="14pt" style:font-name-complex="DejaVu Sans" 
style:font-family-complex="&apos;DejaVu Sans&apos;" 
style:font-family-generic-complex="system" style:font-pitch-complex="variable" 
style:font-size-complex="14pt"/>
+   <style:paragraph-properties fo:margin-top="0.423cm" 
fo:margin-bottom="0.212cm" style:contextual-spacing="false" 
fo:keep-with-next="always"/>
+   <style:text-properties style:font-name="Liberation Serif2" 
fo:font-family="&apos;Liberation Serif&apos;" style:font-style-name="Regular" 
style:font-family-generic="roman" style:font-pitch="variable" 
fo:font-size="16pt" style:font-name-asian="DejaVu Sans" 
style:font-family-asian="&apos;DejaVu Sans&apos;" 
style:font-family-generic-asian="system" style:font-pitch-asian="variable" 
style:font-size-asian="14pt" style:font-name-complex="DejaVu Sans" 
style:font-family-complex="&apos;DejaVu Sans&apos;" 
style:font-family-generic-complex="system" style:font-pitch-complex="variable" 
style:font-size-complex="14pt"/>
   </style:style>
   <style:style style:name="Text_20_body" style:display-name="Text body" 
style:family="paragraph" style:parent-style-name="Standard" style:class="text">
-   <style:paragraph-properties fo:margin-top="0cm" fo:margin-bottom="0.212cm" 
loext:contextual-spacing="false"/>
-   <style:text-properties style:font-name="Liberation Sans" 
fo:font-family="&apos;Liberation Sans&apos;" style:font-style-name="Regular" 
style:font-family-generic="swiss" style:font-pitch="variable" 
style:font-size-asian="10.5pt"/>
+   <style:paragraph-properties fo:margin-top="0cm" fo:margin-bottom="0.212cm" 
style:contextual-spacing="false"/>
+   <style:text-properties style:font-name="Liberation Sans1" 
fo:font-family="&apos;Liberation Sans&apos;" style:font-style-name="Regular" 
style:font-family-generic="swiss" style:font-pitch="variable" 
style:font-size-asian="10.5pt"/>
   </style:style>
   <style:style style:name="List" style:family="paragraph" 
style:parent-style-name="Text_20_body" style:class="list">
    <style:text-properties style:font-size-asian="12pt"/>
   </style:style>
   <style:style style:name="Caption" style:family="paragraph" 
style:parent-style-name="Standard" style:class="extra">
-   <style:paragraph-properties fo:margin-top="0.212cm" 
fo:margin-bottom="0.212cm" loext:contextual-spacing="false" 
text:number-lines="false" text:line-number="0"/>
+   <style:paragraph-properties fo:margin-top="0.212cm" 
fo:margin-bottom="0.212cm" style:contextual-spacing="false" 
text:number-lines="false" text:line-number="0"/>
    <style:text-properties fo:font-size="12pt" fo:font-style="italic" 
style:font-size-asian="12pt" style:font-style-asian="italic" 
style:font-size-complex="12pt" style:font-style-complex="italic"/>
   </style:style>
   <style:style style:name="Index" style:family="paragraph" 
style:parent-style-name="Standard" style:class="index">
@@ -187,7 +196,7 @@
   </style:style>
   <style:style style:name="Table_20_Heading" style:display-name="Table 
Heading" style:family="paragraph" style:parent-style-name="Table_20_Contents" 
style:class="extra" style:master-page-name="">
    <style:paragraph-properties fo:text-align="center" 
style:justify-single-word="false" style:page-number="auto" 
text:number-lines="false" text:line-number="0"/>
-   <style:text-properties style:font-name="Liberation Serif" 
fo:font-family="&apos;Liberation Serif&apos;" style:font-style-name="Bold" 
style:font-family-generic="roman" style:font-pitch="variable" 
fo:font-weight="bold" style:font-size-asian="10.5pt" 
style:font-weight-asian="bold" style:font-weight-complex="bold"/>
+   <style:text-properties style:font-name="Liberation Serif1" 
fo:font-family="&apos;Liberation Serif&apos;" style:font-style-name="Bold" 
style:font-family-generic="roman" style:font-pitch="variable" 
fo:font-weight="bold" style:font-size-asian="10.5pt" 
style:font-weight-asian="bold" style:font-weight-complex="bold"/>
   </style:style>
   <style:style style:name="Heading_20_1" style:display-name="Heading 1" 
style:family="paragraph" style:parent-style-name="Heading" 
style:next-style-name="Text_20_body" style:class="text">
    <style:text-properties fo:font-size="16pt" fo:font-weight="bold" 
style:font-size-asian="115%" style:font-weight-asian="bold" 
style:font-size-complex="115%" style:font-weight-complex="bold"/>
@@ -229,51 +238,51 @@
   </style:style>
   <style:style style:name="Text" style:family="paragraph" 
style:parent-style-name="Caption" style:class="extra"/>
   <style:style style:name="Quotations" style:family="paragraph" 
style:parent-style-name="Standard" style:class="html">
-   <style:paragraph-properties fo:margin-left="1cm" fo:margin-right="1cm" 
fo:margin-top="0cm" fo:margin-bottom="0.499cm" loext:contextual-spacing="false" 
fo:text-indent="0cm" style:auto-text-indent="false"/>
+   <style:paragraph-properties fo:margin-left="1cm" fo:margin-right="1cm" 
fo:margin-top="0cm" fo:margin-bottom="0.499cm" style:contextual-spacing="false" 
fo:text-indent="0cm" style:auto-text-indent="false"/>
   </style:style>
   <style:style style:name="Title" style:family="paragraph" 
style:parent-style-name="Heading" style:next-style-name="Text_20_body" 
style:class="chapter">
    <style:paragraph-properties fo:text-align="center" 
style:justify-single-word="false"/>
    <style:text-properties fo:font-size="28pt" fo:font-weight="bold" 
style:font-size-asian="28pt" style:font-weight-asian="bold" 
style:font-size-complex="28pt" style:font-weight-complex="bold"/>
   </style:style>
   <style:style style:name="Subtitle" style:family="paragraph" 
style:parent-style-name="Heading" style:next-style-name="Text_20_body" 
style:class="chapter">
-   <style:paragraph-properties fo:margin-top="0.106cm" 
fo:margin-bottom="0.212cm" loext:contextual-spacing="false" 
fo:text-align="center" style:justify-single-word="false"/>
+   <style:paragraph-properties fo:margin-top="0.106cm" 
fo:margin-bottom="0.212cm" style:contextual-spacing="false" 
fo:text-align="center" style:justify-single-word="false"/>
    <style:text-properties fo:font-size="18pt" style:font-size-asian="18pt" 
style:font-size-complex="18pt"/>
   </style:style>
   <style:style style:name="Placeholder" style:family="text">
-   <style:text-properties fo:font-variant="small-caps" fo:color="#008080" 
style:text-underline-style="dotted" style:text-underline-width="auto" 
style:text-underline-color="font-color"/>
+   <style:text-properties fo:font-variant="small-caps" fo:color="#008080" 
loext:opacity="100%" style:text-underline-style="dotted" 
style:text-underline-width="auto" style:text-underline-color="font-color"/>
   </style:style>
   <style:style style:name="Bullet_20_Symbols" style:display-name="Bullet 
Symbols" style:family="text">
    <style:text-properties style:font-name="StarSymbol" 
fo:font-family="StarSymbol" fo:font-size="9pt" 
style:font-name-asian="StarSymbol" style:font-family-asian="StarSymbol" 
style:font-size-asian="9pt" style:font-name-complex="StarSymbol" 
style:font-family-complex="StarSymbol" style:font-size-complex="9pt"/>
   </style:style>
   <text:outline-style style:name="Outline">
-   <text:outline-level-style text:level="1" style:num-format="">
+   <text:outline-level-style text:level="1" loext:num-list-format="%1%" 
style:num-format="">
     <style:list-level-properties text:min-label-distance="0.381cm"/>
    </text:outline-level-style>
-   <text:outline-level-style text:level="2" style:num-format="">
+   <text:outline-level-style text:level="2" loext:num-list-format="%2%" 
style:num-format="">
     <style:list-level-properties text:min-label-distance="0.381cm"/>
    </text:outline-level-style>
-   <text:outline-level-style text:level="3" style:num-format="">
+   <text:outline-level-style text:level="3" loext:num-list-format="%3%" 
style:num-format="">
     <style:list-level-properties text:min-label-distance="0.381cm"/>
    </text:outline-level-style>
-   <text:outline-level-style text:level="4" style:num-format="">
+   <text:outline-level-style text:level="4" loext:num-list-format="%4%" 
style:num-format="">
     <style:list-level-properties text:min-label-distance="0.381cm"/>
    </text:outline-level-style>
-   <text:outline-level-style text:level="5" style:num-format="">
+   <text:outline-level-style text:level="5" loext:num-list-format="%5%" 
style:num-format="">
     <style:list-level-properties text:min-label-distance="0.381cm"/>
    </text:outline-level-style>
-   <text:outline-level-style text:level="6" style:num-format="">
+   <text:outline-level-style text:level="6" loext:num-list-format="%6%" 
style:num-format="">
     <style:list-level-properties text:min-label-distance="0.381cm"/>
    </text:outline-level-style>
-   <text:outline-level-style text:level="7" style:num-format="">
+   <text:outline-level-style text:level="7" loext:num-list-format="%7%" 
style:num-format="">
     <style:list-level-properties text:min-label-distance="0.381cm"/>
    </text:outline-level-style>
-   <text:outline-level-style text:level="8" style:num-format="">
+   <text:outline-level-style text:level="8" loext:num-list-format="%8%" 
style:num-format="">
     <style:list-level-properties text:min-label-distance="0.381cm"/>
    </text:outline-level-style>
-   <text:outline-level-style text:level="9" style:num-format="">
+   <text:outline-level-style text:level="9" loext:num-list-format="%9%" 
style:num-format="">
     <style:list-level-properties text:min-label-distance="0.381cm"/>
    </text:outline-level-style>
-   <text:outline-level-style text:level="10" style:num-format="">
+   <text:outline-level-style text:level="10" loext:num-list-format="%10%" 
style:num-format="">
     <style:list-level-properties text:min-label-distance="0.381cm"/>
    </text:outline-level-style>
   </text:outline-style>
@@ -332,68 +341,64 @@
    <style:paragraph-properties fo:text-align="center" 
style:justify-single-word="false"/>
    <style:text-properties officeooo:paragraph-rsid="00224f9c"/>
   </style:style>
-  <style:style style:name="P6" style:family="paragraph" 
style:parent-style-name="Header">
+  <style:style style:name="P6" style:family="paragraph" 
style:parent-style-name="Footer">
+   <style:paragraph-properties fo:text-align="center" 
style:justify-single-word="false"/>
+   <style:text-properties officeooo:paragraph-rsid="00224f9c"/>
+  </style:style>
+  <style:style style:name="P7" style:family="paragraph" 
style:parent-style-name="Header">
    <style:paragraph-properties fo:text-align="start" 
style:justify-single-word="false"/>
    <style:text-properties fo:font-size="12pt" 
officeooo:paragraph-rsid="00224f9c" style:font-size-asian="12pt" 
style:font-size-complex="12pt"/>
   </style:style>
-  <style:style style:name="P7" style:family="paragraph" 
style:parent-style-name="Footer">
-   <style:paragraph-properties fo:text-align="center" 
style:justify-single-word="false"/>
-   <style:text-properties officeooo:paragraph-rsid="00224f9c"/>
-  </style:style>
   <style:style style:name="P8" style:family="paragraph" 
style:parent-style-name="Footer">
    <style:paragraph-properties fo:text-align="end" 
style:justify-single-word="false"/>
   </style:style>
   <style:style style:name="P9" style:family="paragraph" 
style:parent-style-name="Text_20_body">
-   <style:text-properties style:font-name="Liberation Serif2"/>
+   <style:text-properties style:font-name="Liberation Serif"/>
   </style:style>
   <style:style style:name="P10" style:family="paragraph" 
style:parent-style-name="Table_20_Heading">
    <style:paragraph-properties fo:text-align="center" 
style:justify-single-word="false"/>
-   <style:text-properties style:font-name="Liberation Serif2"/>
+   <style:text-properties style:font-name="Liberation Serif"/>
   </style:style>
   <style:style style:name="P11" style:family="paragraph" 
style:parent-style-name="Table_20_Contents">
-   <style:text-properties style:font-name="Liberation Serif2"/>
+   <style:text-properties style:font-name="Liberation Serif"/>
   </style:style>
   <style:style style:name="P12" style:family="paragraph" 
style:parent-style-name="Table_20_Contents">
    <style:paragraph-properties fo:text-align="end" 
style:justify-single-word="false"/>
-   <style:text-properties style:font-name="Liberation Serif2"/>
+   <style:text-properties style:font-name="Liberation Serif"/>
   </style:style>
   <style:style style:name="P13" style:family="paragraph" 
style:parent-style-name="Table_20_Contents">
-   <style:text-properties style:font-name="Liberation Serif2" 
officeooo:paragraph-rsid="0025e811"/>
+   <style:text-properties style:font-name="Liberation Serif" 
officeooo:paragraph-rsid="0025e811"/>
   </style:style>
   <style:style style:name="P14" style:family="paragraph" 
style:parent-style-name="Standard">
    <style:paragraph-properties fo:break-before="page"/>
   </style:style>
   <style:style style:name="P15" style:family="paragraph" 
style:parent-style-name="Standard">
    <style:paragraph-properties fo:margin-left="11.28cm" fo:margin-right="0cm" 
fo:text-indent="0cm" style:auto-text-indent="false"/>
-   <style:text-properties style:font-name="Liberation Sans1"/>
+   <style:text-properties style:font-name="Liberation Sans"/>
   </style:style>
-  <style:style style:name="P16" style:family="paragraph" 
style:parent-style-name="Standard">
+  <style:style style:name="P16" style:family="paragraph" 
style:parent-style-name="Standard" style:master-page-name="">
+   <style:paragraph-properties fo:margin-left="11.28cm" fo:margin-right="0cm" 
fo:text-indent="0cm" style:auto-text-indent="false" style:page-number="auto" 
fo:break-before="page"/>
+   <style:text-properties style:font-name="Liberation Sans"/>
+  </style:style>
+  <style:style style:name="P17" style:family="paragraph" 
style:parent-style-name="Standard">
    <style:paragraph-properties fo:margin-left="11.28cm" fo:margin-right="0cm" 
fo:text-indent="0cm" style:auto-text-indent="false"/>
-   <style:text-properties style:font-name="Liberation Sans1" 
officeooo:paragraph-rsid="0028d873"/>
-  </style:style>
-  <style:style style:name="P17" style:family="paragraph" 
style:parent-style-name="Standard" style:master-page-name="">
-   <style:paragraph-properties fo:margin-left="11.28cm" fo:margin-right="0cm" 
fo:text-indent="0cm" style:auto-text-indent="false" style:page-number="auto" 
fo:break-before="page"/>
-   <style:text-properties style:font-name="Liberation Sans1"/>
+   <style:text-properties style:font-name="Liberation Sans" 
officeooo:paragraph-rsid="0028d873"/>
   </style:style>
   <style:style style:name="P18" style:family="paragraph" 
style:parent-style-name="Standard" style:master-page-name="">
    <style:paragraph-properties fo:margin-left="11.28cm" fo:margin-right="0cm" 
fo:text-indent="0cm" style:auto-text-indent="false" style:page-number="auto" 
fo:break-before="page"/>
-   <style:text-properties style:font-name="Liberation Sans1" 
officeooo:paragraph-rsid="0028d873"/>
+   <style:text-properties style:font-name="Liberation Sans" 
officeooo:paragraph-rsid="0028d873"/>
   </style:style>
-  <style:style style:name="P19" style:family="paragraph" 
style:parent-style-name="Heading_20_1">
+  <style:style style:name="P19" style:family="paragraph" 
style:parent-style-name="Standard" style:master-page-name="">
+   <style:paragraph-properties fo:margin-left="0cm" fo:margin-right="0cm" 
fo:text-indent="0cm" style:auto-text-indent="false" style:page-number="auto" 
fo:break-before="page"/>
+   <style:text-properties style:font-name="Liberation Sans" fo:font-size="6pt" 
officeooo:paragraph-rsid="0028d873" style:font-size-asian="5.25pt" 
style:font-size-complex="6pt"/>
+  </style:style>
+  <style:style style:name="P20" style:family="paragraph" 
style:parent-style-name="Heading_20_1">
    <style:paragraph-properties fo:text-align="center" 
style:justify-single-word="false"/>
    <style:text-properties style:text-underline-style="solid" 
style:text-underline-width="auto" style:text-underline-color="font-color"/>
   </style:style>
-  <style:style style:name="P20" style:family="paragraph" 
style:parent-style-name="Standard">
+  <style:style style:name="P21" style:family="paragraph" 
style:parent-style-name="Standard">
    <style:text-properties officeooo:paragraph-rsid="001d64ef"/>
   </style:style>
-  <style:style style:name="P21" style:family="paragraph" 
style:parent-style-name="Standard">
-   <style:paragraph-properties fo:margin-left="11.28cm" fo:margin-right="0cm" 
fo:text-indent="0cm" style:auto-text-indent="false"/>
-   <style:text-properties style:font-name="Liberation Sans1" 
officeooo:paragraph-rsid="0028d873"/>
-  </style:style>
-  <style:style style:name="P22" style:family="paragraph" 
style:parent-style-name="Standard" style:master-page-name="">
-   <style:paragraph-properties fo:margin-left="0cm" fo:margin-right="0cm" 
fo:text-indent="0cm" style:auto-text-indent="false" style:page-number="auto" 
fo:break-before="page"/>
-   <style:text-properties style:font-name="Liberation Sans1" 
fo:font-size="6pt" officeooo:paragraph-rsid="0028d873" 
style:font-size-asian="5.25pt" style:font-size-complex="6pt"/>
-  </style:style>
   <style:style style:name="T1" style:family="text">
    <style:text-properties fo:font-weight="bold" style:font-weight-asian="bold" 
style:font-weight-complex="bold"/>
   </style:style>
@@ -401,7 +406,7 @@
    <style:text-properties fo:font-weight="normal" 
style:font-weight-asian="normal" style:font-weight-complex="normal"/>
   </style:style>
   <style:page-layout style:name="pm1">
-   <style:page-layout-properties fo:page-width="20.999cm" 
fo:page-height="29.699cm" style:num-format="1" 
style:print-orientation="portrait" fo:margin-top="2cm" fo:margin-bottom="2cm" 
fo:margin-left="2cm" fo:margin-right="2cm" style:writing-mode="lr-tb" 
style:layout-grid-color="#c0c0c0" style:layout-grid-lines="44" 
style:layout-grid-base-height="0.55cm" style:layout-grid-ruby-height="0cm" 
style:layout-grid-mode="none" style:layout-grid-ruby-below="false" 
style:layout-grid-print="true" style:layout-grid-display="true" 
style:footnote-max-height="0cm">
+   <style:page-layout-properties fo:page-width="20.999cm" 
fo:page-height="29.699cm" style:num-format="1" 
style:print-orientation="portrait" fo:margin-top="2cm" fo:margin-bottom="2cm" 
fo:margin-left="2cm" fo:margin-right="2cm" style:writing-mode="lr-tb" 
style:layout-grid-color="#c0c0c0" style:layout-grid-lines="44" 
style:layout-grid-base-height="0.55cm" style:layout-grid-ruby-height="0cm" 
style:layout-grid-mode="none" style:layout-grid-ruby-below="false" 
style:layout-grid-print="true" style:layout-grid-display="true" 
style:footnote-max-height="0cm" loext:margin-gutter="0cm">
     <style:footnote-sep style:width="0.018cm" 
style:distance-before-sep="0.101cm" style:distance-after-sep="0.101cm" 
style:line-style="none" style:adjustment="left" style:rel-width="25%" 
style:color="#000000"/>
    </style:page-layout-properties>
    <style:header-style>
@@ -411,16 +416,19 @@
     <style:header-footer-properties fo:min-height="0cm" fo:margin-left="0cm" 
fo:margin-right="0cm" fo:margin-top="0.499cm"/>
    </style:footer-style>
   </style:page-layout>
+  <style:style style:name="dp1" style:family="drawing-page">
+   <style:drawing-page-properties draw:background-size="full"/>
+  </style:style>
  </office:automatic-styles>
  <office:master-styles>
-  <style:master-page style:name="Standard" style:page-layout-name="pm1">
+  <style:master-page style:name="Standard" style:page-layout-name="pm1" 
draw:style-name="dp1">
    <style:header>
     <text:p text:style-name="P1"><text:placeholder 
text:placeholder-type="text">&lt;if test=&quot;company and 
company.header&quot;&gt;</text:placeholder></text:p>
     <text:p text:style-name="P1"><text:placeholder 
text:placeholder-type="text">&lt;for each=&quot;line in 
company.header.split(&apos;\n&apos;)&quot;&gt;</text:placeholder></text:p>
     <text:p text:style-name="P1"><text:placeholder 
text:placeholder-type="text">&lt;line&gt;</text:placeholder></text:p>
     <text:p text:style-name="P1"><text:placeholder 
text:placeholder-type="text">&lt;/for&gt;</text:placeholder></text:p>
     <text:p text:style-name="P2"><text:placeholder 
text:placeholder-type="text">&lt;/if&gt;</text:placeholder></text:p>
-    <text:p text:style-name="P3"><text:placeholder 
text:placeholder-type="text">&lt;company.rec_name if company else 
''&gt;</text:placeholder></text:p>
+    <text:p text:style-name="P3"><text:placeholder 
text:placeholder-type="text">&lt;company.rec_name if company else 
&apos;&apos;&gt;</text:placeholder></text:p>
    </style:header>
    <style:footer>
     <text:p text:style-name="P2"><text:placeholder 
text:placeholder-type="text">&lt;if test=&quot;company and 
company.footer&quot;&gt;</text:placeholder></text:p>
@@ -443,19 +451,20 @@
     <text:sequence-decl text:display-outline-level="0" text:name="Figure"/>
    </text:sequence-decls>
    <text:p text:style-name="P14"><text:placeholder 
text:placeholder-type="text">&lt;for each=&quot;shipment in 
records&quot;&gt;</text:placeholder></text:p>
-   <text:p text:style-name="P22"/>
-   <text:p text:style-name="P16"><text:placeholder 
text:placeholder-type="text">&lt;replace 
text:p=&quot;set_lang(shipment.delivery_address.party.lang)&quot;&gt;</text:placeholder></text:p>
-   <text:p text:style-name="P16"><text:placeholder 
text:placeholder-type="text">&lt;replace 
text:p=&quot;shipment.set_lang(shipment.delivery_address.party.lang)&quot;&gt;</text:placeholder></text:p>
-   <text:p text:style-name="P16"><text:placeholder 
text:placeholder-type="text">&lt;for each=&quot;line in 
shipment.delivery_address.full_address.split(&apos;\n&apos;)&quot;&gt;</text:placeholder></text:p>
+   <text:p text:style-name="P19"/>
+   <text:p text:style-name="P17"><text:placeholder 
text:placeholder-type="text">&lt;replace 
text:p=&quot;set_lang(shipment.delivery_address.party.lang)&quot;&gt;</text:placeholder></text:p>
+   <text:p text:style-name="P17"><text:placeholder 
text:placeholder-type="text">&lt;replace 
text:p=&quot;shipment.set_lang(shipment.delivery_address.party.lang)&quot;&gt;</text:placeholder></text:p>
+   <text:p text:style-name="P17"><text:placeholder 
text:placeholder-type="text">&lt;shipment.customer.full_name&gt;</text:placeholder></text:p>
+   <text:p text:style-name="P17"><text:placeholder 
text:placeholder-type="text">&lt;for each=&quot;line in 
shipment.delivery_address.full_address.split(&apos;\n&apos;)&quot;&gt;</text:placeholder></text:p>
    <text:p text:style-name="P15"><text:placeholder 
text:placeholder-type="text">&lt;line&gt;</text:placeholder></text:p>
    <text:p text:style-name="P15"><text:placeholder 
text:placeholder-type="text">&lt;/for&gt;</text:placeholder></text:p>
-   <text:p text:style-name="P19">Delivery Note</text:p>
-   <text:p text:style-name="P20"><text:span text:style-name="T1">Shipment 
Number:</text:span> <text:placeholder 
text:placeholder-type="text">&lt;shipment.number&gt;</text:placeholder><text:span
 text:style-name="T2"><text:line-break/></text:span><text:span 
text:style-name="T1">Customer Code:</text:span><text:span text:style-name="T2"> 
</text:span><text:span text:style-name="T2"><text:placeholder 
text:placeholder-type="text">&lt;shipment.customer.code&gt;</text:placeholder></text:span><text:span
 text:style-name="T2"><text:line-break/></text:span><text:span 
text:style-name="T1">Reference:</text:span><text:span text:style-name="T2"> 
</text:span><text:span text:style-name="T2"><text:placeholder 
text:placeholder-type="text">&lt;shipment.origins or 
&apos;&apos;&gt;</text:placeholder></text:span><text:span 
text:style-name="T2"><text:placeholder text:placeholder-type="text">&lt;&apos;, 
&apos; if (shipment.origins and shipment.reference) else 
&apos;&apos;&gt;</text:placeholder></text:span><text:span 
text:style-name="T2"><text:placeholder 
text:placeholder-type="text">&lt;shipment.reference or 
&apos;&apos;&gt;</text:placeholder></text:span><text:span 
text:style-name="T2"><text:line-break/></text:span><text:span 
text:style-name="T1">Date: </text:span><text:span 
text:style-name="T2"><text:placeholder 
text:placeholder-type="text">&lt;format_date(shipment.effective_date and 
shipment.effective_date or datetime.datetime.today(), 
shipment.delivery_address.party.lang)&gt;</text:placeholder></text:span></text:p>
+   <text:p text:style-name="P20">Delivery Note</text:p>
+   <text:p text:style-name="P21"><text:span text:style-name="T1">Shipment 
Number:</text:span> <text:placeholder 
text:placeholder-type="text">&lt;shipment.number&gt;</text:placeholder><text:span
 text:style-name="T2"><text:line-break/></text:span><text:span 
text:style-name="T1">Customer Code:</text:span><text:span text:style-name="T2"> 
</text:span><text:span text:style-name="T2"><text:placeholder 
text:placeholder-type="text">&lt;shipment.customer.code&gt;</text:placeholder></text:span><text:span
 text:style-name="T2"><text:line-break/></text:span><text:span 
text:style-name="T1">Reference:</text:span><text:span text:style-name="T2"> 
</text:span><text:span text:style-name="T2"><text:placeholder 
text:placeholder-type="text">&lt;shipment.origins or 
&apos;&apos;&gt;</text:placeholder></text:span><text:span 
text:style-name="T2"><text:placeholder text:placeholder-type="text">&lt;&apos;, 
&apos; if (shipment.origins and shipment.reference) else 
&apos;&apos;&gt;</text:placeholder></text:span><text:span 
text:style-name="T2"><text:placeholder 
text:placeholder-type="text">&lt;shipment.reference or 
&apos;&apos;&gt;</text:placeholder></text:span><text:span 
text:style-name="T2"><text:line-break/></text:span><text:span 
text:style-name="T1">Date: </text:span><text:span 
text:style-name="T2"><text:placeholder 
text:placeholder-type="text">&lt;format_date(shipment.effective_date and 
shipment.effective_date or datetime.datetime.today(), 
shipment.delivery_address.party.lang)&gt;</text:placeholder></text:span></text:p>
    <table:table table:name="Table1" table:style-name="Table1">
     <table:table-column table:style-name="Table1.A"/>
     <table:table-column table:style-name="Table1.B"/>
     <table:table-header-rows>
-     <table:table-row>
+     <table:table-row table:style-name="TableLine94459967088608">
       <table:table-cell table:style-name="Table1.A1" 
office:value-type="string">
        <text:p text:style-name="P10">Product</text:p>
       </table:table-cell>
@@ -464,13 +473,13 @@
       </table:table-cell>
      </table:table-row>
     </table:table-header-rows>
-    <table:table-row>
+    <table:table-row table:style-name="TableLine94459967142064">
      <table:table-cell table:style-name="Table1.A4" 
table:number-columns-spanned="2" office:value-type="string">
       <text:p text:style-name="P11"><text:placeholder 
text:placeholder-type="text">&lt;for each=&quot;move in 
shipment.outgoing_moves&quot;&gt;</text:placeholder></text:p>
      </table:table-cell>
      <table:covered-table-cell/>
     </table:table-row>
-    <table:table-row>
+    <table:table-row table:style-name="TableLine94459967143328">
      <table:table-cell table:style-name="Table1.A3" office:value-type="string">
       <text:p text:style-name="P13"><text:placeholder 
text:placeholder-type="text">&lt;move.product.rec_name&gt;</text:placeholder></text:p>
      </table:table-cell>
@@ -478,7 +487,7 @@
       <text:p text:style-name="P12"><text:placeholder 
text:placeholder-type="text">&lt;format_number_symbol(move.quantity, 
shipment.delivery_address.party.lang, move.uom, 
digits=move.uom.digits)&gt;</text:placeholder></text:p>
      </table:table-cell>
     </table:table-row>
-    <table:table-row>
+    <table:table-row table:style-name="TableLine94459967144848">
      <table:table-cell table:style-name="Table1.A4" 
table:number-columns-spanned="2" office:value-type="string">
       <text:p text:style-name="P11"><text:placeholder 
text:placeholder-type="text">&lt;/for&gt;</text:placeholder></text:p>
      </table:table-cell>
@@ -488,4 +497,4 @@
    <text:p text:style-name="P9"><text:placeholder 
text:placeholder-type="text">&lt;/for&gt;</text:placeholder></text:p>
   </office:text>
  </office:body>
-</office:document>
+</office:document>
\ No newline at end of file
diff -r 11631a8664bf -r 9b8ef75eb991 location.py
--- a/location.py       Thu Sep 08 13:19:52 2022 +0200
+++ b/location.py       Sat Sep 10 18:34:29 2022 +0200
@@ -6,17 +6,15 @@
 
 from sql import Column
 
-from trytond import backend
 from trytond.cache import Cache
 from trytond.i18n import gettext
 from trytond.model import (
-    DeactivableMixin, MatchMixin, Model, ModelSQL, ModelView, ValueMixin,
-    fields, sequence_ordered, tree)
+    DeactivableMixin, MatchMixin, Model, ModelSQL, ModelView, fields,
+    sequence_ordered, tree)
 from trytond.modules.product import price_digits, round_price
-from trytond.pool import Pool, PoolMeta
+from trytond.pool import Pool
 from trytond.pyson import Eval, If
 from trytond.tools import grouped_slice
-from trytond.tools.multivalue import migrate_property
 from trytond.transaction import Transaction
 
 from .exceptions import LocationValidationError
@@ -148,6 +146,14 @@
             ],
         help="The warehouses that use the location for waste products.")
 
+    allow_pickup = fields.Boolean(
+        "Allow Pickup",
+        states={
+            'invisible': (
+                (Eval('type') != 'warehouse')
+                & ~Eval('address')),
+            })
+
     quantity = fields.Function(
         fields.Float(
             "Quantity", digits=(16, Eval('quantity_uom_digits', 2)),
@@ -636,83 +642,6 @@
             ]
 
 
-supplier_location = fields.Many2One(
-    'stock.location', "Supplier Location", domain=[('type', '=', 'supplier')],
-    help="The default source location for stock received from the party.")
-customer_location = fields.Many2One(
-    'stock.location', "Customer Location", domain=[('type', '=', 'customer')],
-    help="The default destination location for stock sent to the party.")
-
-
-class Party(metaclass=PoolMeta):
-    __name__ = 'party.party'
-    supplier_location = fields.MultiValue(supplier_location)
-    customer_location = fields.MultiValue(customer_location)
-    locations = fields.One2Many(
-        'party.party.location', 'party', "Locations")
-
-    @classmethod
-    def multivalue_model(cls, field):
-        pool = Pool()
-        if field in {'supplier_location', 'customer_location'}:
-            return pool.get('party.party.location')
-        return super(Party, cls).multivalue_model(field)
-
-    @classmethod
-    def default_supplier_location(cls, **pattern):
-        return cls.multivalue_model(
-            'supplier_location').default_supplier_location()
-
-    @classmethod
-    def default_customer_location(cls, **pattern):
-        return cls.multivalue_model(
-            'customer_location').default_customer_location()
-
-
-class PartyLocation(ModelSQL, ValueMixin):
-    "Party Location"
-    __name__ = 'party.party.location'
-    party = fields.Many2One(
-        'party.party', "Party", ondelete='CASCADE', select=True)
-    supplier_location = supplier_location
-    customer_location = customer_location
-
-    @classmethod
-    def __register__(cls, module_name):
-        exist = backend.TableHandler.table_exist(cls._table)
-
-        super(PartyLocation, cls).__register__(module_name)
-
-        if not exist:
-            cls._migrate_property([], [], [])
-
-    @classmethod
-    def _migrate_property(cls, field_names, value_names, fields):
-        field_names.extend(['supplier_location', 'customer_location'])
-        value_names.extend(['supplier_location', 'customer_location'])
-        migrate_property(
-            'party.party', field_names, cls, value_names,
-            parent='party', fields=fields)
-
-    @classmethod
-    def default_supplier_location(cls):
-        pool = Pool()
-        ModelData = pool.get('ir.model.data')
-        try:
-            return ModelData.get_id('stock', 'location_supplier')
-        except KeyError:
-            return None
-
-    @classmethod
-    def default_customer_location(cls):
-        pool = Pool()
-        ModelData = pool.get('ir.model.data')
-        try:
-            return ModelData.get_id('stock', 'location_customer')
-        except KeyError:
-            return None
-
-
 class ProductsByLocationsContext(ModelView):
     'Products by Locations'
     __name__ = 'stock.products_by_locations.context'
diff -r 11631a8664bf -r 9b8ef75eb991 location.xml
--- a/location.xml      Thu Sep 08 13:19:52 2022 +0200
+++ b/location.xml      Sat Sep 10 18:34:29 2022 +0200
@@ -126,13 +126,6 @@
             <field name="perm_delete" eval="True"/>
         </record>
 
-        <record model="ir.ui.view" id="party_view_form">
-            <field name="model">party.party</field>
-            <field name="inherit" ref="party.party_view_form"/>
-            <field name="name">party_form</field>
-        </record>
-
-
         <record model="ir.ui.view" id="location_lead_time_view_list">
             <field name="model">stock.location.lead_time</field>
             <field name="type">tree</field>
diff -r 11631a8664bf -r 9b8ef75eb991 party.py
--- a/party.py  Thu Sep 08 13:19:52 2022 +0200
+++ b/party.py  Sat Sep 10 18:34:29 2022 +0200
@@ -1,9 +1,122 @@
 # This file is part of Tryton.  The COPYRIGHT file at the top level of
 # this repository contains the full copyright notices and license terms.
+from trytond import backend
 from trytond.i18n import gettext
-from trytond.model import fields
+from trytond.model import ModelSQL, ValueMixin, fields
 from trytond.modules.party.exceptions import EraseError
 from trytond.pool import Pool, PoolMeta
+from trytond.tools.multivalue import migrate_property
+from trytond.transaction import Transaction
+
+supplier_location = fields.Many2One(
+    'stock.location', "Supplier Location", domain=[('type', '=', 'supplier')],
+    help="The default source location for stock received from the party.")
+customer_location = fields.Many2One(
+    'stock.location', "Customer Location", domain=[('type', '=', 'customer')],
+    help="The default destination location for stock sent to the party.")
+
+
+class Party(metaclass=PoolMeta):
+    __name__ = 'party.party'
+
+    supplier_location = fields.MultiValue(supplier_location)
+    customer_location = fields.MultiValue(customer_location)
+    locations = fields.One2Many(
+        'party.party.location', 'party', "Locations")
+    delivered_to_warehouses = fields.Many2Many(
+        'party.party-delivered_to-stock.location', 'party', 'location',
+        "Delivered to Warehouses",
+        domain=[
+            ('type', '=', 'warehouse'),
+            ],
+        filter=[
+            ('allow_pickup', '=', True),
+            ])
+
+    @classmethod
+    def multivalue_model(cls, field):
+        pool = Pool()
+        if field in {'supplier_location', 'customer_location'}:
+            return pool.get('party.party.location')
+        return super().multivalue_model(field)
+
+    @classmethod
+    def default_supplier_location(cls, **pattern):
+        return cls.multivalue_model(
+            'supplier_location').default_supplier_location()
+
+    @classmethod
+    def default_customer_location(cls, **pattern):
+        return cls.multivalue_model(
+            'customer_location').default_customer_location()
+
+    def address_get(self, type=None):
+        pool = Pool()
+        Location = pool.get('stock.location')
+        context = Transaction().context
+        address = super().address_get(type=type)
+        if (type == 'delivery'
+                and context.get('warehouse')):
+            warehouse = Location(context['warehouse'])
+            if warehouse in self.delivered_to_warehouses:
+                address = warehouse.address
+        return address
+
+
+class PartyLocation(ModelSQL, ValueMixin):
+    "Party Location"
+    __name__ = 'party.party.location'
+    party = fields.Many2One(
+        'party.party', "Party", ondelete='CASCADE', select=True)
+    supplier_location = supplier_location
+    customer_location = customer_location
+
+    @classmethod
+    def __register__(cls, module_name):
+        exist = backend.TableHandler.table_exist(cls._table)
+
+        super().__register__(module_name)
+
+        if not exist:
+            cls._migrate_property([], [], [])
+
+    @classmethod
+    def _migrate_property(cls, field_names, value_names, fields):
+        field_names.extend(['supplier_location', 'customer_location'])
+        value_names.extend(['supplier_location', 'customer_location'])
+        migrate_property(
+            'party.party', field_names, cls, value_names,
+            parent='party', fields=fields)
+
+    @classmethod
+    def default_supplier_location(cls):
+        pool = Pool()
+        ModelData = pool.get('ir.model.data')
+        try:
+            return ModelData.get_id('stock', 'location_supplier')
+        except KeyError:
+            return None
+
+    @classmethod
+    def default_customer_location(cls):
+        pool = Pool()
+        ModelData = pool.get('ir.model.data')
+        try:
+            return ModelData.get_id('stock', 'location_customer')
+        except KeyError:
+            return None
+
+
+class PartyDeliveredToWarehouse(ModelSQL):
+    "Party Delivered to Warehouse"
+    __name__ = 'party.party-delivered_to-stock.location'
+
+    party = fields.Many2One('party.party', "Party", required=True)
+    location = fields.Many2One(
+        'stock.location', "Location", required=True, ondelete='CASCADE',
+        domain=[
+            ('type', '=', 'warehouse'),
+            ])
 
 
 class Address(metaclass=PoolMeta):
@@ -11,6 +124,8 @@
     delivery = fields.Boolean(
         'Delivery',
         help="Check to send deliveries to the address.")
+    warehouses = fields.One2Many(
+        'stock.location', 'address', "Warehouses", readonly=True)
 
 
 class ContactMechanism(metaclass=PoolMeta):
diff -r 11631a8664bf -r 9b8ef75eb991 party.xml
--- a/party.xml Thu Sep 08 13:19:52 2022 +0200
+++ b/party.xml Sat Sep 10 18:34:29 2022 +0200
@@ -3,6 +3,12 @@
 this repository contains the full copyright notices and license terms. -->
 <tryton>
     <data>
+        <record model="ir.ui.view" id="party_party_view_form">
+            <field name="model">party.party</field>
+            <field name="inherit" ref="party.party_view_form"/>
+            <field name="name">party_form</field>
+        </record>
+
         <record model="ir.ui.view" id="address_view_tree">
             <field name="model">party.address</field>
             <field name="inherit" ref="party.address_view_tree"/>
diff -r 11631a8664bf -r 9b8ef75eb991 shipment.py
--- a/shipment.py       Thu Sep 08 13:19:52 2022 +0200
+++ b/shipment.py       Sat Sep 10 18:34:29 2022 +0200
@@ -601,8 +601,14 @@
         states={
             'readonly': Eval('state') != 'draft',
             },
-        domain=[
-            ('party', '=', Eval('supplier'))
+        domain=['OR',
+            ('party', '=', Eval('supplier')),
+            ('warehouses', 'where', [
+                    ('id', '=', Eval('warehouse', -1)),
+                    If(Eval('state') == 'draft',
+                        ('allow_pickup', '=', True),
+                        ()),
+                    ]),
             ],
         help="Where the stock is sent to.")
     from_location = fields.Many2One('stock.location', "From Location",
@@ -615,6 +621,9 @@
             'readonly': (Eval('state') != 'draft') | Eval('moves', [0]),
             }, domain=[('type', '=', 'supplier')],
         help="Where the stock is moved to.")
+    warehouse = fields.Function(
+        fields.Many2One('stock.location', "Warehouse"),
+        'on_change_with_warehouse')
     moves = fields.One2Many('stock.move', 'shipment', 'Moves',
         states={
             'readonly': (((Eval('state') != 'draft') | ~Eval('from_location'))
@@ -734,6 +743,11 @@
             self.delivery_address = self.supplier.address_get('delivery')
             self.to_location = self.supplier.supplier_location
 
+    @fields.depends('from_location')
+    def on_change_with_warehouse(self, name=None):
+        if self.from_location and self.from_location.warehouse:
+            return self.from_location.warehouse.id
+
     @property
     def _move_planned_date(self):
         '''
@@ -955,7 +969,16 @@
         'Delivery Address', required=True,
         states={
             'readonly': Eval('state') != 'draft',
-            }, domain=[('party', '=', Eval('customer'))],
+            },
+        domain=['OR',
+            ('party', '=', Eval('customer')),
+            ('warehouses', 'where', [
+                    ('id', '=', Eval('warehouse', -1)),
+                    If(Eval('state') == 'draft',
+                        ('allow_pickup', '=', True),
+                        ()),
+                    ]),
+            ],
         help="Where the stock is sent to.")
     reference = fields.Char("Reference", size=None, select=True,
         states={
@@ -1153,11 +1176,14 @@
     def default_company():
         return Transaction().context.get('company')
 
-    @fields.depends('customer')
+    @fields.depends('customer', 'warehouse')
     def on_change_customer(self):
         self.delivery_address = None
         if self.customer:
-            self.delivery_address = self.customer.address_get(type='delivery')
+            with Transaction().set_context(
+                    warehouse=self.warehouse.id if self.warehouse else None):
+                self.delivery_address = self.customer.address_get(
+                    type='delivery')
 
     @fields.depends('customer')
     def on_change_with_customer_location(self, name=None):
@@ -1611,8 +1637,8 @@
         help="The party that purchased the stock.")
     customer_location = fields.Function(fields.Many2One('stock.location',
             'Customer Location'), 'on_change_with_customer_location')
-    delivery_address = fields.Many2One('party.address',
-        'Delivery Address', required=True,
+    contact_address = fields.Many2One(
+        'party.address', "Contact Address",
         states={
             'readonly': Eval('state') != 'draft',
             }, domain=[('party', '=', Eval('customer'))],
@@ -1729,6 +1755,9 @@
         if table.column_exist('code'):
             table.column_rename('code', 'number')
 
+        # Migration from 6.4: rename delivery_address to contact_address
+        table.column_rename('delivery_address', 'contact_address')
+
         super(ShipmentOutReturn, cls).__register__(module_name)
 
         # Migration from 5.6: rename state cancel to cancelled
@@ -1736,6 +1765,9 @@
                 [sql_table.state], ['cancelled'],
                 where=sql_table.state == 'cancel'))
 
+        # Migration from 6.4: remove required on contact_address
+        table.not_null_action('contact_address', 'remove')
+
     @classmethod
     def order_effective_date(cls, tables):
         table, _ = tables[None]
@@ -1756,9 +1788,9 @@
 
     @fields.depends('customer')
     def on_change_customer(self):
-        self.delivery_address = None
+        self.contact_address = None
         if self.customer:
-            self.delivery_address = self.customer.address_get(type='delivery')
+            self.contact_address = self.customer.address_get()
 
     @fields.depends('customer')
     def on_change_with_customer_location(self, name=None):
@@ -2736,7 +2768,7 @@
 
     @classmethod
     def execute(cls, ids, data):
-        with Transaction().set_context(address_with_party=True):
+        with Transaction().set_context(address_with_party=False):
             return super(DeliveryNote, cls).execute(ids, data)
 
 
diff -r 11631a8664bf -r 9b8ef75eb991 view/location_form.xml
--- a/view/location_form.xml    Thu Sep 08 13:19:52 2022 +0200
+++ b/view/location_form.xml    Sat Sep 10 18:34:29 2022 +0200
@@ -17,7 +17,9 @@
     <newline/>
     <label name="address"/>
     <field name="address"/>
-    <newline/>
+    <label name="allow_pickup"/>
+    <field name="allow_pickup"/>
+
     <label name="input_location"/>
     <field name="input_location"/>
     <newline/>
diff -r 11631a8664bf -r 9b8ef75eb991 view/party_form.xml
--- a/view/party_form.xml       Thu Sep 08 13:19:52 2022 +0200
+++ b/view/party_form.xml       Sat Sep 10 18:34:29 2022 +0200
@@ -12,6 +12,9 @@
             <field name="customer_location"/>
             <label name="supplier_location"/>
             <field name="supplier_location"/>
+
+            <separator name="delivered_to_warehouses" colspan="4"/>
+            <field name="delivered_to_warehouses" colspan="4" 
widget="multiselection"/>
         </page>
     </xpath>
 </data>
diff -r 11631a8664bf -r 9b8ef75eb991 view/shipment_out_return_form.xml
--- a/view/shipment_out_return_form.xml Thu Sep 08 13:19:52 2022 +0200
+++ b/view/shipment_out_return_form.xml Sat Sep 10 18:34:29 2022 +0200
@@ -8,8 +8,8 @@
     <field name="number"/>
     <label name="customer"/>
     <field name="customer"/>
-    <label name="delivery_address"/>
-    <field name="delivery_address"/>
+    <label name="contact_address"/>
+    <field name="contact_address"/>
     <label name="planned_date"/>
     <field name="planned_date"/>
     <label name="effective_date"/>
diff -r 11631a8664bf -r 9b8ef75eb991 view/shipment_out_return_tree.xml
--- a/view/shipment_out_return_tree.xml Thu Sep 08 13:19:52 2022 +0200
+++ b/view/shipment_out_return_tree.xml Sat Sep 10 18:34:29 2022 +0200
@@ -9,6 +9,6 @@
     <field name="effective_date" optional="0"/>
     <field name="warehouse" expand="1" optional="0"/>
     <field name="customer" expand="2" optional="0"/>
-    <field name="delivery_address" optional="1"/>
+    <field name="contact_address" optional="1"/>
     <field name="state"/>
 </tree>

Reply via email to