Merge branch 'initial_branch' into 'master'

Initial commit

See merge request tabulasense/client_contracts!1
This commit is contained in:
Andrey Khozov 2018-11-08 18:13:39 +05:00
commit 93458f5fe7
15 changed files with 2435 additions and 0 deletions

2
.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
*.pyc
idea/

6
.idea/vcs.xml generated Normal file
View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>

846
.idea/workspace.xml generated Normal file
View File

@ -0,0 +1,846 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ChangeListManager">
<list default="true" id="f04ec5ee-004e-4a46-8928-714efbc22225" name="Default" comment="">
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/models/models.py" afterPath="$PROJECT_DIR$/models/models.py" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/views/templates.xml" afterPath="$PROJECT_DIR$/views/templates.xml" />
</list>
<option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
<option name="TRACKING_ENABLED" value="true" />
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
<option name="LAST_RESOLUTION" value="IGNORE" />
</component>
<component name="FileEditorManager">
<leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
<file leaf-file-name="models.py" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/models/models.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-40">
<caret line="51" column="27" lean-forward="false" selection-start-line="51" selection-start-column="27" selection-end-line="51" selection-end-column="27" />
<folding>
<element signature="e#25#54#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="contract_wizard.xml" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/views/contract_wizard.xml">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="1095">
<caret line="73" column="25" lean-forward="false" selection-start-line="73" selection-start-column="25" selection-end-line="73" selection-end-column="25" />
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="contract_wizard.py" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/models/contract_wizard.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="405">
<caret line="27" column="59" lean-forward="false" selection-start-line="27" selection-start-column="59" selection-end-line="27" selection-end-column="59" />
<folding>
<element signature="e#25#36#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="__manifest__.py" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/__manifest__.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="120">
<caret line="8" column="78" lean-forward="false" selection-start-line="8" selection-start-column="78" selection-end-line="8" selection-end-column="78" />
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="templates.xml" pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/views/templates.xml">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="120">
<caret line="8" column="58" lean-forward="false" selection-start-line="8" selection-start-column="58" selection-end-line="8" selection-end-column="58" />
<folding>
<element signature="n#template#1;n#data#0;n#odoo#0;n#!!top" expanded="false" />
<element signature="e#1086#1091#0" expanded="true" />
<element signature="e#1375#1380#0" expanded="true" />
<element signature="n#template#2;n#data#0;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#template#3;n#data#0;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#template#4;n#data#0;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#template#5;n#data#0;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#template#6;n#data#0;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#template#7;n#data#0;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#template#8;n#data#0;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#template#9;n#data#0;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#template#10;n#data#0;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#template#11;n#data#0;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#template#12;n#data#0;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#template#13;n#data#0;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#template#14;n#data#0;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#template#15;n#data#0;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#template#16;n#data#0;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#template#17;n#data#0;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#template#18;n#data#0;n#odoo#0;n#!!top" expanded="false" />
<element signature="e#29894#29899#0" expanded="true" />
<element signature="e#29904#29909#0" expanded="true" />
<element signature="e#29914#29919#0" expanded="true" />
<element signature="e#29924#29929#0" expanded="true" />
<element signature="e#29934#29939#0" expanded="true" />
<element signature="e#29944#29949#0" expanded="true" />
<element signature="n#template#20;n#data#0;n#odoo#0;n#!!top" expanded="false" />
<element signature="e#33184#33189#0" expanded="true" />
<element signature="e#33194#33199#0" expanded="true" />
<element signature="e#33204#33209#0" expanded="true" />
<element signature="e#33214#33219#0" expanded="true" />
<element signature="e#33224#33229#0" expanded="true" />
<element signature="e#33234#33239#0" expanded="true" />
<element signature="n#template#21;n#data#0;n#odoo#0;n#!!top" expanded="false" />
<element signature="e#36637#36642#0" expanded="true" />
<element signature="e#36647#36652#0" expanded="true" />
<element signature="e#36657#36662#0" expanded="true" />
<element signature="e#36667#36672#0" expanded="true" />
<element signature="e#36677#36682#0" expanded="true" />
<element signature="e#36687#36692#0" expanded="true" />
<element signature="n#template#22;n#data#0;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#template#23;n#data#0;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#template#24;n#data#0;n#odoo#0;n#!!top" expanded="false" />
</folding>
</state>
</provider>
</entry>
</file>
</leaf>
</component>
<component name="FileTemplateManagerImpl">
<option name="RECENT_TEMPLATES">
<list>
<option value="Python Script" />
</list>
</option>
</component>
<component name="FindInProjectRecents">
<findStrings>
<find>data</find>
<find>o.</find>
<find>valign=top</find>
<find>&lt;br&gt;</find>
</findStrings>
<replaceStrings>
<replace>docs[0].</replace>
<replace>valign=&quot;top&quot;</replace>
<replace>width=&quot;49%&quot;</replace>
<replace>&lt;br/&gt;</replace>
<replace>align=&quot;left&quot;</replace>
<replace>&lt;br /&gt;</replace>
</replaceStrings>
</component>
<component name="Git.Settings">
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
</component>
<component name="IdeDocumentHistory">
<option name="CHANGED_PATHS">
<list>
<option value="$PROJECT_DIR$/views/reports_templates.xml" />
<option value="$PROJECT_DIR$/report/contract.xml" />
<option value="$PROJECT_DIR$/report/__init__.py" />
<option value="$PROJECT_DIR$/report/contract.py" />
<option value="$PROJECT_DIR$/models/contract.py" />
<option value="$PROJECT_DIR$/report/contract_full.xml" />
<option value="$PROJECT_DIR$/views/contract.xml" />
<option value="$PROJECT_DIR$/views/res_partner.xml" />
<option value="$PROJECT_DIR$/models/__init__.py" />
<option value="$PROJECT_DIR$/__init__.py" />
<option value="$PROJECT_DIR$/controllers/__init__.py" />
<option value="$PROJECT_DIR$/controllers/controllers.py" />
<option value="$PROJECT_DIR$/views/contract_wizard.xml" />
<option value="$PROJECT_DIR$/models/contract_wizard.py" />
<option value="$PROJECT_DIR$/__manifest__.py" />
<option value="$PROJECT_DIR$/models/models.py" />
<option value="$PROJECT_DIR$/views/templates.xml" />
</list>
</option>
</component>
<component name="ProjectFrameBounds" extendedState="6">
<option name="x" value="6" />
<option name="y" value="55" />
<option name="width" value="1914" />
<option name="height" value="1076" />
</component>
<component name="ProjectLevelVcsManager" settingsEditedManually="true" />
<component name="ProjectView">
<navigator currentView="ProjectPane" proportions="" version="1">
<flattenPackages />
<showMembers />
<showModules />
<showLibraryContents />
<hideEmptyPackages />
<abbreviatePackageNames />
<autoscrollToSource />
<autoscrollFromSource />
<sortByType />
<manualOrder />
<foldersAlwaysOnTop value="true" />
</navigator>
<panes>
<pane id="Scratches" />
<pane id="ProjectPane">
<subPane>
<expand>
<path>
<item name="client_contracts" type="b2602c69:ProjectViewProjectNode" />
<item name="client_contracts" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="client_contracts" type="b2602c69:ProjectViewProjectNode" />
<item name="client_contracts" type="462c0819:PsiDirectoryNode" />
<item name="controllers" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="client_contracts" type="b2602c69:ProjectViewProjectNode" />
<item name="client_contracts" type="462c0819:PsiDirectoryNode" />
<item name="models" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="client_contracts" type="b2602c69:ProjectViewProjectNode" />
<item name="client_contracts" type="462c0819:PsiDirectoryNode" />
<item name="security" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="client_contracts" type="b2602c69:ProjectViewProjectNode" />
<item name="client_contracts" type="462c0819:PsiDirectoryNode" />
<item name="views" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="client_contracts" type="b2602c69:ProjectViewProjectNode" />
<item name="External Libraries" type="cb654da1:ExternalLibrariesNode" />
</path>
<path>
<item name="client_contracts" type="b2602c69:ProjectViewProjectNode" />
<item name="External Libraries" type="cb654da1:ExternalLibrariesNode" />
<item name="&lt; Python 2.7.13 (/usr/bin/python2.7) &gt;" type="70bed36:NamedLibraryElementNode" />
</path>
</expand>
<select />
</subPane>
</pane>
<pane id="Scope" />
</panes>
</component>
<component name="PropertiesComponent">
<property name="settings.editor.selected.configurable" value="com.jetbrains.python.configuration.PyActiveSdkModuleConfigurable" />
<property name="last_opened_file_path" value="$USER_HOME$/odoo/addons/hr_eyekraft_control" />
</component>
<component name="RecentsManager">
<key name="MoveFile.RECENT_KEYS">
<recent name="$PROJECT_DIR$/views" />
<recent name="$PROJECT_DIR$/models" />
</key>
</component>
<component name="RunDashboard">
<option name="ruleStates">
<list>
<RuleState>
<option name="name" value="ConfigurationTypeDashboardGroupingRule" />
</RuleState>
<RuleState>
<option name="name" value="StatusDashboardGroupingRule" />
</RuleState>
</list>
</option>
</component>
<component name="ShelveChangesManager" show_recycled="false">
<option name="remove_strategy" value="false" />
</component>
<component name="TaskManager">
<task active="true" id="Default" summary="Default task">
<changelist id="f04ec5ee-004e-4a46-8928-714efbc22225" name="Default" comment="" />
<created>1540457007119</created>
<option name="number" value="Default" />
<option name="presentableId" value="Default" />
<updated>1540457007119</updated>
</task>
<servers />
</component>
<component name="ToolWindowManager">
<frame x="-1" y="0" width="1922" height="1048" extended-state="6" />
<editor active="true" />
<layout>
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.27588046" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
<window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
<window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="true" content_ui="tabs" />
<window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32829374" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
<window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
<window_info id="Python Console" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
<window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
<window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
<window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="true" content_ui="tabs" />
<window_info id="Data View" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
<window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
<window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
<window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
<window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
<window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
<window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
</layout>
</component>
<component name="VcsContentAnnotationSettings">
<option name="myLimit" value="2678400000" />
</component>
<component name="XDebuggerManager">
<breakpoint-manager>
<option name="time" value="2" />
</breakpoint-manager>
<watches-manager />
</component>
<component name="editorHistoryManager">
<entry file="file://$PROJECT_DIR$/models/models.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0">
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/views/res_partner.xml">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="315">
<caret line="21" column="31" lean-forward="false" selection-start-line="21" selection-start-column="31" selection-end-line="21" selection-end-column="31" />
<folding>
<element signature="n#record#0;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#record#1;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#record#2;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#record#3;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#record#4;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#record#5;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#record#6;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#record#7;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#record#8;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#record#9;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#record#10;n#odoo#0;n#!!top" expanded="false" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/models/contract_wizard.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="1815">
<caret line="202" column="65" lean-forward="false" selection-start-line="202" selection-start-column="65" selection-end-line="202" selection-end-column="65" />
<folding>
<element signature="e#12796#12943#0" expanded="false" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/views/contract_wizard.xml">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="330">
<caret line="22" column="54" lean-forward="false" selection-start-line="22" selection-start-column="54" selection-end-line="22" selection-end-column="54" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/models/__init__.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="30">
<caret line="2" column="37" lean-forward="false" selection-start-line="2" selection-start-column="37" selection-end-line="2" selection-end-column="37" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/views/reports_templates.xml">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0">
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/__manifest__.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="450">
<caret line="30" column="8" lean-forward="false" selection-start-line="30" selection-start-column="8" selection-end-line="30" selection-end-column="8" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/models/models.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="525">
<caret line="35" column="45" lean-forward="true" selection-start-line="35" selection-start-column="45" selection-end-line="35" selection-end-column="45" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/models/contract_wizard.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="285">
<caret line="24" column="54" lean-forward="true" selection-start-line="24" selection-start-column="54" selection-end-line="24" selection-end-column="54" />
<folding>
<element signature="e#12796#12943#0" expanded="false" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/views/contract_wizard.xml">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="330">
<caret line="22" column="49" lean-forward="false" selection-start-line="22" selection-start-column="49" selection-end-line="22" selection-end-column="49" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/models/__init__.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="30">
<caret line="2" column="37" lean-forward="false" selection-start-line="2" selection-start-column="37" selection-end-line="2" selection-end-column="37" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/views/reports_templates.xml">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0">
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/__manifest__.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="450">
<caret line="30" column="8" lean-forward="false" selection-start-line="30" selection-start-column="8" selection-end-line="30" selection-end-column="8" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/views/res_partner.xml">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="1170">
<caret line="89" column="39" lean-forward="false" selection-start-line="89" selection-start-column="39" selection-end-line="89" selection-end-column="39" />
<folding>
<element signature="n#record#0;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#record#1;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#record#2;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#record#3;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#record#4;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#record#5;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#record#6;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#record#7;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#record#8;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#record#9;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#record#10;n#odoo#0;n#!!top" expanded="false" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/models/models.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="390">
<caret line="26" column="34" lean-forward="false" selection-start-line="26" selection-start-column="34" selection-end-line="26" selection-end-column="34" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/views/res_partner.xml">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="510">
<caret line="45" column="50" lean-forward="false" selection-start-line="45" selection-start-column="50" selection-end-line="45" selection-end-column="50" />
<folding>
<element signature="n#record#0;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#record#1;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#record#2;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#record#3;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#record#4;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#record#5;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#record#6;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#record#7;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#record#8;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#record#9;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#record#10;n#odoo#0;n#!!top" expanded="false" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/views/contract_wizard.xml">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="690">
<caret line="46" column="7" lean-forward="true" selection-start-line="46" selection-start-column="7" selection-end-line="46" selection-end-column="7" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/models/__init__.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="30">
<caret line="2" column="37" lean-forward="false" selection-start-line="2" selection-start-column="37" selection-end-line="2" selection-end-column="37" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/views/reports_templates.xml">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0">
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/__manifest__.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="450">
<caret line="30" column="8" lean-forward="false" selection-start-line="30" selection-start-column="8" selection-end-line="30" selection-end-column="8" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/models/contract_wizard.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="1815">
<caret line="126" column="34" lean-forward="false" selection-start-line="126" selection-start-column="34" selection-end-line="126" selection-end-column="34" />
<folding>
<element signature="e#12796#12943#0" expanded="false" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/models/models.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="720">
<caret line="48" column="17" lean-forward="false" selection-start-line="48" selection-start-column="17" selection-end-line="48" selection-end-column="17" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/models/contract_wizard.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="345">
<caret line="26" column="28" lean-forward="false" selection-start-line="26" selection-start-column="28" selection-end-line="26" selection-end-column="28" />
<folding>
<element signature="e#12796#12943#0" expanded="false" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/views/res_partner.xml">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="285">
<caret line="19" column="47" lean-forward="false" selection-start-line="19" selection-start-column="47" selection-end-line="19" selection-end-column="47" />
<folding>
<element signature="n#record#0;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#record#1;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#record#2;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#record#3;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#record#4;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#record#5;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#record#6;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#record#7;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#record#8;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#record#9;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#record#10;n#odoo#0;n#!!top" expanded="false" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/models/__init__.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="30">
<caret line="2" column="37" lean-forward="false" selection-start-line="2" selection-start-column="37" selection-end-line="2" selection-end-column="37" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/views/reports_templates.xml">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0">
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/__manifest__.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="450">
<caret line="30" column="8" lean-forward="false" selection-start-line="30" selection-start-column="8" selection-end-line="30" selection-end-column="8" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/views/contract_wizard.xml">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="150">
<caret line="10" column="37" lean-forward="false" selection-start-line="10" selection-start-column="37" selection-end-line="10" selection-end-column="37" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/models/models.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="675">
<caret line="45" column="26" lean-forward="false" selection-start-line="45" selection-start-column="26" selection-end-line="45" selection-end-column="26" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/views/reports_templates.xml">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0">
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/__manifest__.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="450">
<caret line="30" column="9" lean-forward="false" selection-start-line="30" selection-start-column="9" selection-end-line="30" selection-end-column="9" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/views/res_partner.xml">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="1110">
<caret line="74" column="31" lean-forward="false" selection-start-line="74" selection-start-column="31" selection-end-line="74" selection-end-column="31" />
<folding>
<element signature="n#record#0;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#record#1;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#record#2;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#record#3;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#record#4;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#record#5;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#record#6;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#record#7;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#record#8;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#record#9;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#record#10;n#odoo#0;n#!!top" expanded="false" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/models/models.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="315">
<caret line="21" column="21" lean-forward="false" selection-start-line="21" selection-start-column="4" selection-end-line="21" selection-end-column="21" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/__manifest__.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="435">
<caret line="29" column="32" lean-forward="false" selection-start-line="29" selection-start-column="32" selection-end-line="29" selection-end-column="32" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/views/res_partner.xml">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="255">
<caret line="17" column="13" lean-forward="false" selection-start-line="17" selection-start-column="13" selection-end-line="17" selection-end-column="13" />
<folding>
<element signature="n#record#0;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#record#1;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#record#2;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#record#3;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#record#4;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#record#5;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#record#6;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#record#7;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#record#8;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#record#9;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#record#10;n#odoo#0;n#!!top" expanded="false" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/report/__init__.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0">
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/models/contract.py" />
<entry file="file://$PROJECT_DIR$/report/contract_full.xml">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0">
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/views/contract.xml">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="15">
<caret line="1" column="0" lean-forward="false" selection-start-line="1" selection-start-column="0" selection-end-line="1" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/views/reports_templates.xml">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0">
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/views/views.xml">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0">
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/controllers/controllers.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="240">
<caret line="16" column="0" lean-forward="true" selection-start-line="16" selection-start-column="0" selection-end-line="16" selection-end-column="0" />
<folding>
<element signature="e#25#60#0" expanded="false" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/controllers/__init__.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="45">
<caret line="3" column="0" lean-forward="false" selection-start-line="3" selection-start-column="0" selection-end-line="3" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/models/__init__.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="45">
<caret line="3" column="0" lean-forward="false" selection-start-line="3" selection-start-column="0" selection-end-line="3" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/__init__.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="60">
<caret line="4" column="0" lean-forward="false" selection-start-line="4" selection-start-column="0" selection-end-line="4" selection-end-column="0" />
<folding>
<element signature="e#25#50#0" expanded="false" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/views/res_partner.xml">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="420">
<caret line="145" column="0" lean-forward="true" selection-start-line="145" selection-start-column="0" selection-end-line="145" selection-end-column="0" />
<folding>
<element signature="n#record#0;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#record#1;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#record#2;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#record#3;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#record#4;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#record#5;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#record#6;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#record#7;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#record#8;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#record#9;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#record#10;n#odoo#0;n#!!top" expanded="false" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/models/contract_wizard.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="405">
<caret line="27" column="59" lean-forward="false" selection-start-line="27" selection-start-column="59" selection-end-line="27" selection-end-column="59" />
<folding>
<element signature="e#25#36#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/__manifest__.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="120">
<caret line="8" column="78" lean-forward="false" selection-start-line="8" selection-start-column="78" selection-end-line="8" selection-end-column="78" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/views/contract_wizard.xml">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="1095">
<caret line="73" column="25" lean-forward="false" selection-start-line="73" selection-start-column="25" selection-end-line="73" selection-end-column="25" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/models/models.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-40">
<caret line="51" column="27" lean-forward="false" selection-start-line="51" selection-start-column="27" selection-end-line="51" selection-end-column="27" />
<folding>
<element signature="e#25#54#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/views/templates.xml">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="120">
<caret line="8" column="58" lean-forward="false" selection-start-line="8" selection-start-column="58" selection-end-line="8" selection-end-column="58" />
<folding>
<element signature="n#template#1;n#data#0;n#odoo#0;n#!!top" expanded="false" />
<element signature="e#1086#1091#0" expanded="true" />
<element signature="e#1375#1380#0" expanded="true" />
<element signature="n#template#2;n#data#0;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#template#3;n#data#0;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#template#4;n#data#0;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#template#5;n#data#0;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#template#6;n#data#0;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#template#7;n#data#0;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#template#8;n#data#0;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#template#9;n#data#0;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#template#10;n#data#0;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#template#11;n#data#0;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#template#12;n#data#0;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#template#13;n#data#0;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#template#14;n#data#0;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#template#15;n#data#0;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#template#16;n#data#0;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#template#17;n#data#0;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#template#18;n#data#0;n#odoo#0;n#!!top" expanded="false" />
<element signature="e#29894#29899#0" expanded="true" />
<element signature="e#29904#29909#0" expanded="true" />
<element signature="e#29914#29919#0" expanded="true" />
<element signature="e#29924#29929#0" expanded="true" />
<element signature="e#29934#29939#0" expanded="true" />
<element signature="e#29944#29949#0" expanded="true" />
<element signature="n#template#20;n#data#0;n#odoo#0;n#!!top" expanded="false" />
<element signature="e#33184#33189#0" expanded="true" />
<element signature="e#33194#33199#0" expanded="true" />
<element signature="e#33204#33209#0" expanded="true" />
<element signature="e#33214#33219#0" expanded="true" />
<element signature="e#33224#33229#0" expanded="true" />
<element signature="e#33234#33239#0" expanded="true" />
<element signature="n#template#21;n#data#0;n#odoo#0;n#!!top" expanded="false" />
<element signature="e#36637#36642#0" expanded="true" />
<element signature="e#36647#36652#0" expanded="true" />
<element signature="e#36657#36662#0" expanded="true" />
<element signature="e#36667#36672#0" expanded="true" />
<element signature="e#36677#36682#0" expanded="true" />
<element signature="e#36687#36692#0" expanded="true" />
<element signature="n#template#22;n#data#0;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#template#23;n#data#0;n#odoo#0;n#!!top" expanded="false" />
<element signature="n#template#24;n#data#0;n#odoo#0;n#!!top" expanded="false" />
</folding>
</state>
</provider>
</entry>
</component>
</project>

4
__init__.py Normal file
View File

@ -0,0 +1,4 @@
# -*- coding: utf-8 -*-
from . import controllers
from . import models

35
__manifest__.py Normal file
View File

@ -0,0 +1,35 @@
# -*- coding: utf-8 -*-
{
'name': "client_contracts",
'summary': """
Module for storing and creating print forms for contracts with clients""",
'description': """
Module for storing and creating print forms for contracts with clients
""",
'author': "RYDLAB",
'website': "http://rydlab.ru",
# Categories can be used to filter modules in modules listing
# Check https://github.com/odoo/odoo/blob/master/odoo/addons/base/module/module_data.xml
# for the full list
'category': 'hr',
'version': '0.1',
# any module necessary for this one to work correctly
'depends': ['base', 'sale'],
# always loaded
'data': [
# 'security/ir.model.access.csv',
'views/templates.xml',
'views/res_partner.xml',
'views/contract_wizard.xml',
],
# only loaded in demonstration mode
'demo': [
'demo/demo.xml',
],
}

3
controllers/__init__.py Normal file
View File

@ -0,0 +1,3 @@
# -*- coding: utf-8 -*-
from . import controllers

View File

@ -0,0 +1,16 @@
# -*- coding: utf-8 -*-
from werkzeug import datastructures
from odoo import http
class ResPartnerContractBinary(http.Controller):
@http.route('/web/binary/get_compiled_contract')
def download_compiled_contract(self, doc_id, doc_name):
contract_wizard = http.request.env['res.partner.contract.wizard'].sudo().browse(int(doc_id))
file_content = contract_wizard.get_docx_contract_1()
headers = datastructures.Headers()
headers.add('Content-Disposition', 'attachment', filename=doc_name)
return http.request.make_response(file_content, headers)

30
demo/demo.xml Normal file
View File

@ -0,0 +1,30 @@
<odoo>
<data>
<!-- -->
<!-- <record id="object0" model="client_contracts.client_contracts"> -->
<!-- <field name="name">Object 0</field> -->
<!-- <field name="value">0</field> -->
<!-- </record> -->
<!-- -->
<!-- <record id="object1" model="client_contracts.client_contracts"> -->
<!-- <field name="name">Object 1</field> -->
<!-- <field name="value">10</field> -->
<!-- </record> -->
<!-- -->
<!-- <record id="object2" model="client_contracts.client_contracts"> -->
<!-- <field name="name">Object 2</field> -->
<!-- <field name="value">20</field> -->
<!-- </record> -->
<!-- -->
<!-- <record id="object3" model="client_contracts.client_contracts"> -->
<!-- <field name="name">Object 3</field> -->
<!-- <field name="value">30</field> -->
<!-- </record> -->
<!-- -->
<!-- <record id="object4" model="client_contracts.client_contracts"> -->
<!-- <field name="name">Object 4</field> -->
<!-- <field name="value">40</field> -->
<!-- </record> -->
<!-- -->
</data>
</odoo>

3
models/__init__.py Normal file
View File

@ -0,0 +1,3 @@
# -*- coding: utf-8 -*-
from . import models, contract_wizard

372
models/contract_wizard.py Normal file
View File

@ -0,0 +1,372 @@
# -*- coding: utf-8 -*-
import math
from datetime import datetime
from docxtpl import DocxTemplate
from pytils import numeral
from odoo import models, fields, api
from odoo.tools.config import config
class AnnexLine(models.TransientModel):
_name = 'res.partner.contract.annex.line'
@api.onchange('annex_type')
def _get_default_description(self):
self.description = self.annex_type.description
annex_type = fields.Many2one('res.partner.contract.annex.type')
description = fields.Text()
class ContractWizard(models.TransientModel):
_name = 'res.partner.contract.wizard'
def _get_default_template(self):
_template = self.env['res.partner.contract.template'].search([('is_contract_template', '=', True)])
if _template:
return _template[0].id
else:
return False
def _get_default_partner(self):
current_id = self.env.context.get('active_ids')
return self.env['res.partner.contract'].browse([current_id[0]]).partner_id.id
def _get_default_contract(self):
current_id = self.env.context.get('active_ids')
return self.env['res.partner.contract'].browse(current_id[0])
def _get_partner_representer(self):
return self.partner_id.representative_id
type = fields.Selection(string='Type of contract',
selection=[('person', 'With person'), ('company', 'With company')],
default='company')
template = fields.Many2one('res.partner.contract.template',
string='Template',
help='Template for contract',
default=_get_default_template)
partner_id = fields.Many2one('res.partner',
string='Partner',
help='Partner to render contract',
default=_get_default_partner)
order_id = fields.Many2one('sale.order',
string='Appex order',
help='Appex',
)
company_id = fields.Many2one('res.partner',
string='Company',
help='Seller company',
default=lambda self: self.env.user.company_id.partner_id)
contract_id = fields.Many2one('res.partner.contract',
string='Contract',
default=_get_default_contract)
payment_terms = fields.Integer(string='Payment term',
help='When customer must pay',
default=45)
delivery_terms = fields.Integer(string='Delivery terms',
help='When product must be delivered',
default=10)
annex_lines = fields.One2many('res.partner.contract.annex.line', 'id', auto_join=True, copy=True)
@api.onchange('contract_id')
def _compute_context_name(self):
self._context_name = self.contract_id.name
@api.onchange('contract_id')
def _compute_context_date(self):
contract_date = datetime.strptime(self.contract_id.date, '%Y-%m-%d')
self._context_date = contract_date.strftime('%d %b %Y')
@api.onchange('partner_id')
def _compute_context_partner_contract_name(self):
self._context_partner_contract_name = self.partner_id.contract_name
@api.onchange('partner_id')
def _compute_context_partner_adress(self):
self._compute_context_partner_adress = self.partner_id.full_adress
@api.onchange('partner_id')
def _compute_context_partner_representer_contract_name(self):
if self.partner_id.representative_id:
partner_representer_contract_name = self.partner_id.representative_id.contract_name
else:
partner_representer_contract_name = ''
self._context_partner_representer_contract_name = partner_representer_contract_name
@api.onchange('partner_id')
def _compute_context_partner_inn(self):
self._context_partner_inn = self.partner_id.inn
@api.onchange('partner_id')
def _compute_context_partner_kpp(self):
self._context_partner_kpp = self.partner_id.kpp
@api.onchange('partner_id')
def _compute_context_partner_rs(self):
self._context_partner_rs = self.partner_id.bank_account.acc_number
@api.onchange('partner_id')
def _compute_context_partner_bik(self):
self._context_partner_bik = self.partner_id.bank_account.bank_id.bic
@api.onchange('partner_id')
def _compute_context_partner_bank(self):
self._context_partner_bank = self.partner_id.bank_account.bank_id.name
@api.onchange('partner_id')
def _compute_context_partner_phone(self):
self._context_partner_phone = self.partner_id.phone
@api.onchange('partner_id')
def _compute_context_partner_representer_name(self):
self._context_partner_representer_name = self.partner_id.representative_id.name
@api.onchange('company_id')
def _compute_context_seller_contract_name(self):
self._context_seller_contract_name = self.company_id.contract_name
@api.onchange('company_id')
def _compute_context_seller_adress(self):
self._context_seller_adress = self.company_id.full_adress
@api.onchange('company_id')
def _compute_context_seller_representer_contract_job_name(self):
if self.company_id.representative_id:
seller_represent_contract_job_name = self.company_id.representative_id.contract_job_name
else:
seller_represent_contract_job_name = ''
self._context_seller_representer_contract_job_name = seller_represent_contract_job_name
@api.onchange('company_id')
def _compute_context_seller_representer_contract_name(self):
if self.company_id.representative_id:
seller_represent_contract_name = self.company_id.representative_id.contract_name
else:
seller_represent_contract_name = ''
self._context_seller_representer_contract_name = seller_represent_contract_name
@api.onchange('company_id')
def _compute_context_seller_inn(self):
self._context_seller_inn = self.company_id.inn
@api.onchange('company_id')
def _compute_context_seller_kpp(self):
self._context_seller_kpp = self.company_id.kpp
@api.onchange('company_id')
def _compute_context_seller_rs(self):
self._context_seller_rs = self.company_id.bank_account.acc_number
@api.onchange('company_id')
def _compute_context_seller_bik(self):
self._context_seller_bik = self.company_id.bank_account.bank_id.bic
@api.onchange('company_id')
def _compute_context_seller_bank(self):
self._context_seller_bank = self.company_id.bank_account.bank_id.name
@api.onchange('company_id')
def _compute_context_seller_phone(self):
self._context_seller_phone = self.company_id.phone
@api.onchange('company_id')
def _compute_context_seller_representer_job_name(self):
if self.company_id.representative_id:
seller_represent_job_name = self.company_id.representative_id.function
else:
seller_represent_job_name = ''
self._context_seller_representer_job_name = seller_represent_job_name
@api.onchange('company_id')
def _compute_context_seller_representer_name(self):
if self.company_id.representative_id:
seller_represent_name = self.company_id.representative_id.name
else:
seller_represent_name = ''
self._context_seller_representer_name = seller_represent_name
@api.onchange('order_id')
def _compute_context_summ_rub(self):
if self.order_id:
amount = math.modf(self.order_id.amount_total)
else:
amount = math.modf(0.0)
self._context_summ_rub = str(int(amount[1]))
@api.onchange('order_id')
def _compute_context_summ_rub_word(self):
if self.order_id:
amount = math.modf(self.order_id.amount_total)
else:
amount = math.modf(0.0)
self._context_summ_rub_word = numeral.in_words(int(amount[1]))
@api.onchange('order_id')
def _compute_context_summ_kop(self):
if self.order_id:
amount = math.modf(self.order_id.amount_total)
self._context_summ_kop = str(int(amount[0]))
else:
self._context_summ_kop = '0'
@api.onchange('order_id')
def _compute_context_summ_word(self):
self._context_summ_word = numeral.rubles(self.order_id.amount_total)
@api.onchange('delivery_terms')
def _compute_context_delivery_term(self):
self._context_delivery_term = self.delivery_terms
@api.onchange('delivery_terms')
def _compute_context_delivery_term_word(self):
self._context_delivery_term_word = numeral.in_words(self.delivery_terms)
@api.onchange('payment_terms')
def _compute_context_payment_term(self):
self._context_payment_term = self.payment_terms
@api.onchange('payment_terms')
def _compute_context_payment_term_word(self):
self._context_payment_term_word = numeral.in_words(self.payment_terms)
_context_name = fields.Char(compute='_compute_context_name', readonly=True)
_context_date = fields.Char(compute='_compute_context_date', readonly=True)
_context_partner_contract_name = fields.Char(compute='_compute_context_partner_contract_name', readonly=True)
_context_partner_adress = fields.Char(compute='_compute_context_partner_adress', readonly=True)
_context_partner_representer_contract_name = fields.Char(
compute='_compute_context_partner_representer_contract_name', readonly=True)
_context_partner_inn = fields.Char(compute='_compute_context_partner_inn', readonly=True)
_context_partner_kpp = fields.Char(compute='_compute_context_partner_kpp', readonly=True)
_context_partner_rs = fields.Char(compute='_compute_context_partner_rs', readonly=True)
_context_partner_bik = fields.Char(compute='_compute_context_partner_bik', readonly=True)
_context_partner_bank = fields.Char(compute='_compute_context_partner_bank', readonly=True)
_context_partner_phone = fields.Char(compute='_compute_context_partner_phone', readonly=True)
_context_partner_representer_name = fields.Char(compute='_compute_context_partner_representer_name', readonly=True)
_context_seller_contract_name = fields.Char(compute='_compute_context_seller_contract_name', readonly=True)
_context_seller_adress = fields.Char(compute='_compute_context_seller_adress', readonly=True)
_context_seller_representer_contract_job_name = fields.Char(
compute='_compute_context_seller_representer_contract_job_name', readonly=True)
_context_seller_representer_contract_name = fields.Char(compute='_compute_context_seller_representer_contract_name',
readonly=True)
_context_seller_inn = fields.Char(compute='_compute_context_seller_inn', readonly=True)
_context_seller_kpp = fields.Char(compute='_compute_context_seller_kpp', readonly=True)
_context_seller_rs = fields.Char(compute='_compute_context_seller_rs', readonly=True)
_context_seller_bik = fields.Char(compute='_compute_context_seller_bik', readonly=True)
_context_seller_bank = fields.Char(compute='_compute_context_seller_bank', readonly=True)
_context_seller_phone = fields.Char(compute='_compute_context_seller_phone', readonly=True)
_context_seller_representer_job_name = fields.Char(compute='_compute_context_seller_representer_job_name',
readonly=True)
_context_seller_representer_name = fields.Char(compute='_compute_context_seller_representer_name', readonly=True)
_context_summ_rub = fields.Char(compute='_compute_context_summ_rub', readonly=True)
_context_summ_rub_word = fields.Char(compute='_compute_context_summ_rub_word', readonly=True)
_context_summ_kop = fields.Char(compute='_compute_context_summ_kop', readonly=True)
_context_summ_word = fields.Char(compute='_compute_context_summ_word', readonly=True)
_context_delivery_term = fields.Char(compute='_compute_context_delivery_term', readonly=True)
_context_delivery_term_word = fields.Char(compute='_compute_context_delivery_term_word', readonly=True)
_context_payment_term = fields.Char(compute='_compute_context_payment_term', readonly=True)
_context_payment_term_word = fields.Char(compute='_compute_context_payment_term_word', readonly=True)
@api.onchange('partner_id')
def _set_order_domain(self):
current_id = self.env.context.get('active_ids')
domain = [('contract_id', '=', current_id)]
return {'domain': {'order_id': domain}}
def _generate_context(self):
contract_date = datetime.strptime(self.contract_id.date, '%Y-%m-%d')
if self.partner_id.representative_id:
partner_representer_contract_name = self.partner_id.representative_id.contract_name
else:
partner_representer_contract_name = ''
if self.company_id.representative_id:
seller_represent_contract_name = self.company_id.representative_id.contract_name
seller_represent_contract_job_name = self.company_id.representative_id.contract_job_name
seller_represent_name = self.company_id.representative_id.name
seller_represent_job_name = self.company_id.representative_id.function
else:
seller_represent_contract_name = ''
seller_represent_contract_job_name = ''
seller_represent_name = ''
seller_represent_job_name = ''
amount = math.modf(self.order_id.amount_total)
order_goods = []
counter = 1
for line in self.order_id.order_line:
order_line_values = {'label': counter,
'description': line.name,
'count': line.product_qty,
'mesure': line.product_uom.name,
'price': line.price_unit,
'amount': line.price_total}
order_goods.append(order_line_values)
counter += 1
annex_terms = ''
counter = 1
for line in self.annex_lines:
annex_terms = annex_terms + '{}) {}\n'.format(counter, line.description)
counter += 1
context = {'name': self.contract_id.name,
'current_date': contract_date.strftime('%d %b %Y'),
'partner_contract_name': self.partner_id.contract_name,
'partner_adress': self.partner_id.full_adress,
'partner_representer_contract_name': partner_representer_contract_name,
'partner_inn': self.partner_id.inn,
'partner_kpp': self.partner_id.kpp,
'partner_rs': self.partner_id.bank_account.acc_number,
'partner_bik': self.partner_id.bank_account.bank_id.bic,
'partner_bank': self.partner_id.bank_account.bank_id.name,
'partner_phone': self.partner_id.phone,
'partner_representer_name': self.partner_id.representative_id.name,
'seller_contract_name': self.company_id.contract_name,
'seller_adress': self.company_id.full_adress,
'seller_representer_contract_job_name': seller_represent_contract_job_name,
'seller_representer_contract_name': seller_represent_contract_name,
'seller_inn': self.company_id.inn,
'seller_kpp': self.company_id.kpp,
'seller_rs': self.company_id.bank_account.acc_number,
'seller_bik': self.company_id.bank_account.bank_id.bic,
'seller_bank': self.company_id.bank_account.bank_id.name,
'seller_phone': self.company_id.phone,
'seller_representer_job_name': seller_represent_job_name,
'seller_representer_name': seller_represent_name,
'summ_rub': int(amount[1]),
'summ_rub_word': numeral.in_words(int(amount[1])),
'summ_kop': int(amount[0]),
'delivery_term': self.delivery_terms,
'delivery_term_word': numeral.in_words(self.delivery_terms),
'payment_term': self.payment_terms,
'payment_term_word': numeral.in_words(self.payment_terms),
'annex_terms': annex_terms,
'order_goods': order_goods,
}
return context
def get_docx_contract_1(self):
odoo_data_dir = config.get("data_dir")
odoo_bd = config.get("dbfilter")
filename = self.template.store_fname
full_path = '{}/filestore/{}/{}'.format(odoo_data_dir, odoo_bd, filename)
context = self._generate_context()
doc = DocxTemplate(full_path)
doc.render(context)
doc.save('tmp.docx')
return open('tmp.docx', 'rb').read()
def get_docx_contract(self):
return {
'type': 'ir.actions.act_url',
'url': '/web/binary/get_compiled_contract?doc_id={}&doc_name={}.docx'.format(self.id,
self.contract_id.name),
'target': 'self',
}

112
models/models.py Normal file
View File

@ -0,0 +1,112 @@
# -*- coding: utf-8 -*-
from datetime import datetime
from odoo import models, fields, api
class PartnerContract(models.Model):
_name = 'res.partner.contract'
name = fields.Char(
string='Contract number',
help='Number of contract, letters and digits',)
date = fields.Date(
string='Date of conclusion',
help='Date, when contract was concluded',
default=datetime.now().date(),
required=True)
partner_id = fields.Many2one(
'res.partner',
string='Contract Partner',
help='Contract partner',
default=lambda self: self.env.context['active_id'],
required=True)
order_ids = fields.One2many(
'sale.order',
'contract_id',
string='Annexes',
help='Annexes to this contract')
def _calculate_contract_name(self, _date):
contract_date = datetime.strptime(_date, '%Y-%m-%d')
date_part = contract_date.strftime('%d%m-%y')
today_contracts = self.search([('date', '=', contract_date.date())])
if len(today_contracts) > 0:
last_contract_number = int(today_contracts[-1].name.split('-')[2]) + 1
else:
last_contract_number = 1
return '{}-{}'.format(date_part, last_contract_number)
@api.onchange('date')
def _change_contract_name(self):
"""
Procedure for forming contract name
:return: contract name in format "DDMM-YY-№"
"""
self.name = self._calculate_contract_name(self.date)
@api.model
def create(self, vals):
vals['name'] = self._calculate_contract_name(datetime.now())
return super(PartnerContract, self).create(vals)
class AnnexType(models.Model):
_name = 'res.partner.contract.annex.type'
name = fields.Char(string='Annex template name')
description = fields.Text(string='Annex template description')
class ResPartner(models.Model):
_inherit = 'res.partner'
client_contract_ids = fields.One2many(
'res.partner.contract',
'partner_id',
string='Contracts',
help='Contracts for this partner')
contract_count = fields.Integer(
compute='_compute_contract_count',
string='# of contracts')
contract_name = fields.Char(string='Contract name', help='Name, as it would be in contract')
contract_job_name = fields.Char(string='Contract job name', help='Job position as it would be in contract')
representative_id = fields.Many2one('res.partner', string='Representative', help='Person, who represents company')
passport_data = fields.Char(string='Passport', help='Passport data')
full_adress = fields.Char(compute='_compute_full_adress')
bank_account = fields.Many2one('res.partner.bank', string='Bank account')
signature = fields.Binary(string='Client signature')
@api.one
@api.depends('street', 'street2', 'city', 'state_id', 'zip', 'country_id')
def _compute_full_adress(self):
full_adress = '{}, {}, {}, {} {}'.format(self.zip, self.country_id.name, self.city, self.street, self.street2)
self.full_adress = full_adress
@api.one
@api.depends('self.client_contract_ids')
def _compute_contract_count(self):
self.contract_count = len(self.client_contract_ids)
class SaleOrder(models.Model):
_inherit = 'sale.order'
contract_id = fields.Many2one(
'res.partner.contract',
string='Contract',
help='Contract, assigned to this order')
class ContractTemplate(models.Model):
_name = 'res.partner.contract.template'
_inherit = 'ir.attachment'
is_contract_template = fields.Boolean(srting='Is this document contract template?', default=True)

View File

@ -0,0 +1,2 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_client_contracts_client_contracts,client_contracts.client_contracts,model_client_contracts_client_contracts,,1,0,0,0
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_client_contracts_client_contracts client_contracts.client_contracts model_client_contracts_client_contracts 1 0 0 0

83
views/contract_wizard.xml Normal file
View File

@ -0,0 +1,83 @@
<?xml version="1.0" ?>
<odoo>
<act_window id="res_partner_contract_wizard_action"
name="Contract wizard"
res_model="res.partner.contract.wizard"
src_model="res.partner.contract"
view_mode="form"
target="new"/>
<report
id="contract_company_template"
model="res.partner.contract.wizard"
string="Contract"
report_type="qweb-pdf"
name="client_contracts.contract_template"
file="client_contracts.contract_template"
/>
<report
id="contract_personal_template"
model="res.partner.contract.wizard"
string="Contract"
report_type="qweb-pdf"
name="client_contracts.contract_fiz_template"
file="client_contracts.contract_fiz_template"
/>
<report
id="contract_appex_only_template_print"
model="res.partner.contract.wizard"
string="Contract"
report_type="qweb-pdf"
name="client_contracts.contract_appex_only_template"
file="client_contracts.contract_appex_only_template"
/>
<record id="res_partner_contract_wizard_view" model="ir.ui.view">
<field name="name">Contract print wizard</field>
<field name="model">res.partner.contract.wizard</field>
<field name="arch" type="xml">
<form>
<group>
<field name="template"/>
<group name="partner" string="Partner parameters">
<field name="partner_id"/>
</group>
<group name="seller" string="Seller parameters">
<field name="company_id"/>
</group>
<group name="terms" string="Delivery and payment terms">
<field name="payment_terms"/>
<field name="delivery_terms"/>
</group>
<group string="Order info" name="order">
<field name="order_id"/>
</group>
<field name="annex_lines" mode="tree">
<form string="Annex info lines">
<field name="annex_type"/>
<field name="description"/>
</form>
<tree string="Annex info" editable="bottom">
<field name="annex_type"/>
<field name="description"/>
</tree>
</field>
</group>
<button string="Form DOCX from template" type="object" name="get_docx_contract" />
<button string="Form contract with company" type="action" name="%(contract_company_template)d" />
<button string="Form contract with personal" type="action" name="%(contract_personal_template)d" />
<button string="Form only appex contract" type="action" name="%(contract_appex_only_template_print)d" />
<footer>
</footer>
</form>
</field>
</record>
</odoo>

147
views/res_partner.xml Normal file
View File

@ -0,0 +1,147 @@
<?xml version="1.0"?>
<odoo>
<record id="search_res_partner_contract_filter" model="ir.ui.view">
<field name="name">res_partner_contract_search</field>
<field name="model">res.partner.contract</field>
<field name="arch" type="xml">
<search string="Search Contract">
<field name="partner_id" operator="child_of"/>
</search>
</field>
</record>
<record model="ir.ui.view" id="res_partner_contract_tree">
<field name="name">res_partner_contract</field>
<field name="model">res.partner.contract</field>
<field name="arch" type="xml">
<tree string="Contracts">
<field name="name" readonly="1"/>
<field name="date"/>
<field name="partner_id"/>
</tree>
</field>
</record>
<record model="ir.ui.view" id="res_partner_contract_form">
<field name="name">res_partner_contract</field>
<field name="model">res.partner.contract</field>
<field name="arch" type="xml">
<form string="Contract">
<header>
<button name="do_toggle_active" type="object"
string="Active" class="oe_highlight" />
</header>
<sheet>
<group string="Contract parameters" name="single_params">
<field name="name" readonly="1"/>
<field name="date"/>
<field name="partner_id"/>
</group>
<group string="Annexed orders" name="multi_params">
<field name="order_ids" widget="many2many"/>
</group>
</sheet>
</form>
</field>
</record>
<record model="ir.actions.act_window" id="res_partner_contract_action">
<field name="name">res_partner_contract</field>
<field name="res_model">res.partner.contract</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="context">{'search_default_partner_id': active_id}</field>
</record>
<record id="order_contract_tree" model="ir.actions.act_window">
<field name="name">Appexes</field>
<field name="res_model">sale.order</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form,graph</field>
<field name="arch" type="xml">
<tree string="Appexes">
<field name="name"/>
<field name="date"/>
</tree>
</field>
</record>
<record id="res_partner_contract_view_buttons" model="ir.ui.view">
<field name="name">res.partner.contract.view.buttons</field>
<field name="model">res.partner</field>
<field name="inherit_id" ref="base.view_partner_form" />
<field name="priority" eval="25"/>
<field name="arch" type="xml">
<button name="toggle_active" position="before">
<button class="oe_inline oe_stat_button" type="action" name="%(res_partner_contract_action)d"
attrs="{'invisible': [('customer', '=', False)]}"
icon="fa-pencil-square-o">
<field string="Contracts" name="contract_count" widget="statinfo"/>
</button>
</button>
</field>
</record>
<record id="res_partner_inherit" model="ir.ui.view">
<field name="name">res.partner.inherit</field>
<field name="model">res.partner</field>
<field name="inherit_id" ref="base.view_partner_form" />
<field name="priority" eval="25"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='category_id']" position="after">
<field name="contract_name"/>
<field name="contract_job_name"/>
<field name="representative_id" domain="[('id', 'in', child_ids)]" attrs="{'invisible': [('company_type', '!=', 'company')]}"/>
<field name="passport_data" attrs="{'invisible': [('company_type', '=', 'company')]}"/>
<field name="bank_account"/>
<field name="signature" widget="image"/>
</xpath>
</field>
</record>
<record id="annex_type_action" model="ir.actions.act_window">
<field name="name">annex_action</field>
<field name="res_model">res.partner.contract.annex.type</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form,graph</field>
</record>
<record id="res_partner_contract_annex_type_view" model="ir.ui.view">
<field name="name">res_partner_contract_annex_type_view</field>
<field name="model">res.partner.contract.annex.type</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form,graph</field>
<field name="arch" type="xml">
<tree string="Annex type">
<field name="name"/>
<field name="description"/>
</tree>
</field>
</record>
<record id="res_partner_contract_template_action" model="ir.actions.act_window">
<field name="name">res_partner_contract_template_action</field>
<field name="res_model">res.partner.contract.template</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form,graph</field>
</record>
<record id="res_partner_contract_template_view" model="ir.ui.view">
<field name="name">res_partner_contract_template_view</field>
<field name="model">res.partner.contract.template</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form,graph</field>
<field name="arch" type="xml">
<tree string="Template">
<field name="name"/>
<field name="is_contract_template"/>
</tree>
</field>
</record>
<menuitem name="Annex type" parent="sale.menu_sale_config" id="res_partner_contract_annex_type_menu" action="annex_type_action"/>
<menuitem name="Templates" parent="sale.menu_sale_config" id="res_partner_contract_templates" action="res_partner_contract_template_action"/>
</odoo>

774
views/templates.xml Normal file
View File

@ -0,0 +1,774 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<template id="contract_header_template">
<table align="center" border="0px" cellpadding="0" width="100%" style="font-family:Arial; font-size:12px; border-collapse:collapse">
<tr>
<td align="left" colspan="1">
<div t-field="doc.company_id.image" t-options="{'widget': 'image' }"/>
</td>
<td align="right">
<t t-esc="doc.company_id.phone"/> <t t-esc="doc.company_id.email" />
</td>
</tr>
</table>
</template>
<template id="contract_number_and_date">
<tr>
<td>
<hr color="black"/>
</td>
</tr>
<tr valign="top" width="100%">
<td align="center">
<b>ДОГОВОР № <t t-esc="doc.contract_id.name"/></b><br/>
</td>
</tr>
<tr>
<td>
&amp;nbsp;
</td>
</tr>
<tr valign="top">
<td align="left" colspan="2">
Москва, <t t-esc="doc._context_date"/><br/>
</td>
</tr>
<tr>
<td>
&amp;nbsp;
</td>
</tr>
</template>
<template id="contract_contact_partner_template">
<tr valign="top">
<td>
<b><t t-esc="docs.partner_id.contract_name"/></b>,
юридическое лицо, созданное и зарегистрированное в соответствии с законодательством , с зарегистрированным офисом по адресу: <t t-esc="doc.partner_id.full_adress"/>, здесь и далее именуемое «<b>Покупатель</b>»,
в лице уполномоченного представителя <b><t t-esc="doc.partner_id.representative_id.contract_name" /></b>, с одной стороны
</td>
</tr>
</template>
<template id="contract_contact_partner_fiz_template">
<tr valign="top">
<td>
<b><t t-esc="doc.partner_id.contract_name"/></b>,
физическое лицо, зарегистрированное по законодательству Российской Федерации, паспорт <t t-esc="doc.partner_id.passport_data" />, зарегистрированное по адресу: <t t-esc="doc.partner_id.full_adress" /> , здесь и далее именуемое «Покупатель», с одной стороны
</td>
</tr>
</template>
<template id="contract_contact_seller_template">
<tr valign="top">
<td colspan="2">
и <b><t t-esc="doc.company_id.contract_name"/></b>, юридическое лицо, созданное и зарегистрированное в соответствии с законодательством Российской Федерации, с зарегистрированным офисом по адресу: <t t-esc="doc.company_id.full_adress" />, здесь и далее именуемое «<b>Продавец</b>», в лице <b><t t-esc="doc.company_id.representative_id.contract_job_name" /></b> <b><t t-esc="doc.company_id.representative_id.contract_name" /></b>, действующего на основании Устава, с другой стороны, совместно именуемые «Стороны» и по отдельности «Сторона»,
</td>
</tr>
</template>
<template id="contract_chapter_1_template">
<tr valign="top">
<td colspan="2">
<br/><b>1. Предмет Договора</b>
</td>
</tr>
<tr valign="top">
<td colspan="2">
1.1. Продавец обязуется поставлять, а Покупатель принимать и оплачивать Товары, указанные в Приложениях, являющихся неотъемлемой частью настоящего Договора.
</td>
</tr>
<tr valign="top">
<td colspan="2">
1.2. В приложениях определяются наименование, количество, условия и срок поставки, порядок и срок оплаты, цена Товара и т.д.
</td>
</tr>
</template>
<template id="contract_chapter_2_template">
<tr valign="top">
<td colspan="2">
<br/><b>2. Сумма Договора</b>
</td>
</tr>
<tr valign="top">
<td colspan="2">
2.1. Общая сумма Договора складывается из сумм Приложений к настоящему Договору, подписанных Сторонами.
</td>
</tr>
</template>
<template id="contract_chapter_3_template">
<tr valign="top">
<td colspan="2">
<br/><b>3. Условия поставки</b>
</td>
</tr>
<tr valign="top">
<td colspan="2">
3.1. Товар поставляется в согласованные Сторонами сроки, которые указаны в Приложениях к настоящему Договору.
</td>
</tr>
<tr valign="top">
<td colspan="2">
3.2. В случае экспорта за пределы Российской Федерации Правила Толкования Торговых терминов - Международные торговые термины («Инкотермс 2010») имеют обязательный характер для сторон в рамках настоящего Договора.
</td>
</tr>
<tr valign="top">
<td colspan="2">
3.3. В случае экспорта за пределы Российской Федерации датой отгрузки товара считается дата транспортного документа.
</td>
</tr>
<tr valign="top">
<td colspan="2">
3.4. Продавец вправе по своему усмотрению поставлять товар лично, либо поручать отгрузку третьим лицам, в таком случае Продавец несет полную ответственность за них.
</td>
</tr>
<tr valign="top">
<td colspan="2">
3.5. Покупатель обязан принять поставку от любого из грузоотправителей, предложенных Продавцом, в случае, если это оговорено в приложении к Договору.
</td>
</tr>
</template>
<template id="contract_chapter_4_template">
<tr valign="top">
<td colspan="2">
<br/><b>4. Порядок расчетов</b>
</td>
</tr>
<tr valign="top">
<td colspan="2">
4.1. Платеж по настоящему Договору осуществляется Покупателем в течение <t t-esc="doc._context_payment_term" /> (<t t-esc="doc._context_payment_term_word" />) дней с момента выставления счета.
</td>
</tr>
<tr valign="top">
<td colspan="2">
4.2. При поставке товара на условиях 100% предоплаты, Продавец не позднее чем за 5 (пять) дней до отгрузки любыми имеющимися в его распоряжении средствами связи информирует об этом Покупателя.
</td>
</tr>
<tr valign="top">
<td colspan="2">
4.3. Стороны предусматривают возможность частичной предоплаты.
</td>
</tr>
<tr valign="top">
<td colspan="2">
4.4. Платеж осуществляется в рублях путем денежного перевода со счета Покупателя на счет Продавца посредством банковского перевода или с использованием электронных платежных систем.
</td>
</tr>
<tr valign="top">
<td colspan="2">
4.5. Все расходы, связанные с переводом денежных средств, стороны несут каждая на своей территории.
</td>
</tr>
</template>
<template id="contract_chapter_5_template">
<tr valign="top">
<td colspan="2">
<br/><b>5. Качество товара</b>
</td>
</tr>
<tr valign="top">
<td colspan="2">
5.1. Качество Товара должно полностью соответствовать действующим стандартам Российской Федерации или страны-импортера в случае экспорта за пределы Российской Федерации и удостоверяться документами, выданными компетентными организациями страны происхождения.<br/>
Покупатель вправе требовать у Продавца (уполномоченного представителя) безвозмездного устранения недостатков товара, если они обнаружены в течение гарантийного срока или срока годности.
</td>
</tr>
<tr valign="top">
<td colspan="2">
5.2. Гарантийный срок равняется гарантийному сроку на Товар, определенному производителем Товара, но не менее 1 (одного) года с момента передачи Товара Покупателю и начинает течь с даты продажи Товара, указанной в гарантийном талоне и перехода права собственности к конечному Покупателю. Гарантийный срок на Товар приостанавливается при невозможности пользоваться Товаром из-за обнаруженных недостатков.<br/>
Гарантийный срок на комплектующее изделие равен гарантийному сроку на основное изделие.<br/>
При замене некачественного Товара на качественный Товар устанавливается гарантийный срок той же продолжительности, что и на возвращенный некачественный Товар.
</td>
</tr>
<tr valign="top">
<td colspan="2">
5.3. Продавец в течение гарантийного срока обязуется осуществлять ремонт или замену комплектующих вышедших из строя по вине Продавца (Производителя), в случае не возможности осуществить ремонт или замену комплектующих Продавец заменяет на аналогичный качественный Товар.
</td>
</tr>
<tr valign="top">
<td colspan="2">
5.4. Продавец (уполномоченный представитель) обязан устранить недостатки Товара в течение 45 (сорока пяти) дней, без учета затраченного времени на транспортировку Товара, с даты получения требования от Покупателя.
</td>
</tr>
<tr valign="top">
<td colspan="2">
5.5. Гарантия не распротстраняется на неисправности и дефекты, вызванные следующими причинами:<br/>
- пожар, затопление стихийные бедствия, бытовые факторы;<br/>
- при наличии на мебельных поверхностях механических повреждений, термо-воздействий или следов воздействия химических веществ; неисправности, возникшие вследствие нормального износа изделия; преднамеренная порча изделия или ошибочные действия потребителя (покупателя);<br/>
- при неграмотно выполненном самостоятельном подъёме или сборке изделия, внесение изменений в его конструкцию;<br/>
- при нарушении правил эксплуатации изделия мебели, а также по истечению гарантийного срока на изделие мебели.
</td>
</tr>
<tr valign="top">
<td colspan="2">
5.6. В случае несоблюдения правил эксплуатации и использования Товара не по назначению, Продавец не несёт ответственности за потерю потребительских качеств Товара. Сервисное обслуживание и ремонт Товара будет производиться по решению Продавца, а оказание услуг по ремонту - только за счёт Покупателя по расценкам Продавца.
</td>
</tr>
<tr valign="top">
<td colspan="2">
5.7. Продавец обязан обеспечить возможность использования Товара в течение его срока службы. Для этой цели Продавец обеспечивает ремонт и техническое обслуживание Товара, а также выпуск и поставку в торговые и ремонтные организации запасных частей в течение срока производства Товара и после снятия его с производства в течение срока службы Товара.
</td>
</tr>
<tr valign="top">
<td colspan="2">
5.8. Качественный Товар возврату или обмену не подлежит.
</td>
</tr>
<tr valign="top">
<td colspan="2">
5.9. Товар является товаром длительного использования. На него не распространяются требования покупателя о безвозмездном предоставлении ему на период ремонта аналогичного товара.
</td>
</tr>
</template>
<template id="contract_chapter_6_template">
<tr valign="top">
<td colspan="2">
<br/><b>6. Упаковка и маркировка</b>
</td>
</tr>
<tr valign="top">
<td colspan="2">
6.1. Товар должен быть надлежащим образом упакован, запечатан и промаркирован в целях его идентификации и безопасности в процессе транспортировки, погрузки и/или хранения.
</td>
</tr>
<tr valign="top">
<td colspan="2">
6.2. Упаковка должна соответствовать действующим стандартам Российской Федерации.
</td>
</tr>
<tr valign="top">
<td colspan="2">
6.3. Маркировка Товара осуществляется его производителем.
</td>
</tr>
</template>
<template id="contract_chapter_7_template">
<tr valign="top">
<td colspan="2">
<br/><b>7. Порядок отгрузки</b>
</td>
</tr>
<tr valign="top">
<td colspan="2">
7.1. Продавец сообщает Покупателю о готовности Товара к отгрузке не позднее, чем за 5 (пять) дней до планируемой даты отгрузки.
</td>
</tr>
<tr valign="top">
<td colspan="2">
7.2. В товаросопроводительных документах указываются: наименование товара, количество грузовых мест, количество упаковок, вес брутто и нетто. Исправления, дописки и подчистки в указанных документах не допускаются.
</td>
</tr>
<tr valign="top">
<td colspan="2">
7.3. В случае экспорта за пределы Российской Федерации после отгрузки товара, но не позднее чем через 24 (двадцать четыре) часа, Продавец любыми доступными ему способами высылает Покупателю оригиналы коммерческих документов на отгруженную партию товара, необходимых для таможенного оформления в стране импортера:<br/>
- коммерческий счет в 2 экз.<br/>
- счет-проформу в 2 экз.
</td>
</tr>
</template>
<template id="contract_chapter_8_template">
<tr valign="top">
<td colspan="2">
<br/><b>8. Сдача - приемка Товара</b>
</td>
</tr>
<tr valign="top">
<td colspan="2">
8.1. Приемка товара производится:<br/>
- по количеству мест согласно количеству, указанному в товаросопроводительных документах;<br/>
- по количеству изделий согласно спецификации и упаковочным листам;<br/>
- по качеству - согласно п.5 настоящего Договора.
</td>
</tr>
</template>
<template id="contract_chapter_9_template">
<tr valign="top">
<td colspan="2">
<br/><b>9. Ответственность сторон</b>
</td>
</tr>
<tr valign="top">
<td colspan="2">
9.1. Со стороны Продавца:
</td>
</tr>
<tr valign="top">
<td colspan="2">
9.1.1. Если поставка товаров не осуществляется в сроки, предусмотренные настоящим Договором, Продавец выплачивает Покупателю пени в размере 0,05% (ноль целых пяти сотых процента) от стоимости не поставленных в срок товаров за каждый день просрочки, но в совокупности не более 10 (десяти) процентов от стоимости товаров.
</td>
</tr>
<tr valign="top">
<td colspan="2">
9.1.2. Уплата штрафа за нарушение условий Договора не освобождает Продавца от возмещения ущерба, нанесенного Покупателю из-за несоблюдения Продавцом условий Договора, и от обязанностей по выполнению Договора.
</td>
</tr>
<tr valign="top">
<td colspan="2">
9.2. Со стороны Покупателя:
</td>
</tr>
<tr valign="top">
<td colspan="2">
9.2.1. При несвоевременной оплате Покупатель выплачивает пени в размере 0,05% (ноль целых пяти сотых процента) от невыплаченной суммы за каждый день просрочки, но в совокупности не более 10 (десяти) процентов от общей суммы.
</td>
</tr>
<tr valign="top">
<td colspan="2">
9.2.2. Уплата штрафа не освобождает Покупателя от обязанностей по исполнению Договора.
</td>
</tr>
<tr valign="top">
<td colspan="2">
9.3. В случае если недостатки, повреждение или недостачу невозможно было визуально обнаружить при приемке товара (скрытые недостатки), включая контрафактные и фальсифицированные товары с поддельными сертификатами качества, техническими паспортами или свидетельствами на продукцию, Покупатель должен в течение 7 рабочих дней с даты обнаружения недостатков товара направить Продавцу письменное уведомление об обнаруженных им скрытых повреждениях и недостатках товара (Акт о скрытых недостатках). Уведомление направляется в адрес Продавца следующим способом: средствами факсимильной и или электронной связи с дальнейшим направлением заказным письмом с уведомлением.
</td>
</tr>
<tr valign="top">
<td colspan="2">
В таком случае Покупатель вправе, по своему выбору, требовать от Продавца:<br/>
- безвозмездного устранения недостатков товара в разумный срок;<br/>
- возмещения своих расходов на устранение недостатков товара.
</td>
</tr>
<tr valign="top">
<td colspan="2">
В случае существенного нарушения требований к качеству товара, Покупатель вправе, потребовать замены товара ненадлежащего качества товаром, соответствующим договору. В случае возврата некачественного товара Покупателем, Продавец обязуется заменить некачественный товар.
</td>
</tr>
</template>
<template id="contract_chapter_10_template">
<tr valign="top">
<td colspan="2">
<br/><b>10. Форс-мажор</b>
</td>
</tr>
<tr valign="top">
<td colspan="2">
10.1. Стороны освобождаются от ответственности за частичное или полное неисполнение обязательств по настоящему Договору, если это неисполнение явилось следствием обстоятельств непреодолимой силы, возникших после заключения договора в результате событий чрезвычайного характера, которые стороны не могли ни предвидеть, ни предотвратить разумными мерами.
</td>
</tr>
<tr valign="top">
<td colspan="2">
10.2. К обстоятельствам непреодолимой силы относятся события, на которые стороны не могут оказывать влияния и за возникновение которых не несут ответственности.
</td>
</tr>
<tr valign="top">
<td colspan="2">
10.3. В период действия непреодолимой силы и других обстоятельств, освобождающих от ответственности, обязательства сторон приостанавливаются, и санкции за неисполнение обязательств не применяются.
</td>
</tr>
</template>
<template id="contract_chapter_11_template">
<tr valign="top">
<td colspan="2">
<br/><b>11. Споры</b>
</td>
</tr>
<tr valign="top">
<td colspan="2">
11.1. Все споры и разногласия, которые могут возникнуть в связи с исполнением обязательств по настоящему Договору, разрешаются сторонами путем переговоров. В случае не урегулирования спорных вопросов путем переговоров, спор передается на разрешение Арбитражного суда Москвы и Московской области.
</td>
</tr>
<tr valign="top">
<td colspan="2">
11.2. Применимым правом по данному договору является законодательство Российской Федерации.
</td>
</tr>
</template>
<template id="contract_chapter_12_template">
<tr valign="top">
<td colspan="2">
<br/><b>12. Прочие условия</b>
</td>
</tr>
<tr valign="top">
<td colspan="2">
12.1. Ни одна из сторон не вправе передавать свои права и обязанности по Договору третьим лицам без письменного на то согласия другой стороны.
</td>
</tr>
<tr valign="top">
<td colspan="2">
12.2. Всякие изменения и дополнения к настоящему Договору будут действительны лишь при условии, если они совершены в письменной форме и подписаны уполномоченными на то лицами обеих Сторон.
</td>
</tr>
<tr valign="top">
<td colspan="2">
12.3. Настоящий Договор составлен в двух экземплярах, по одному экземпляру для каждой из Сторон, оба экземпляра имеют равную юридическую силу.
</td>
</tr>
<tr valign="top">
<td colspan="2">
12.4. Настоящий договор вступает в силу с даты подписания и действует в течение 1 (одного) года, но в любом случае до полного выполнения сторонами своих обязательств по настоящему договору. В случае если ни одна из Сторон не заявит требования о расторжении договора за 30 (тридцать) календарных дней до его окончания, договор считается пролонгированным на каждый последующий год.
</td>
</tr>
<tr valign="top">
<td colspan="2">
12.5. С момента подписания настоящего Договора все предшествующие договоренности и переписка, связанные с настоящим Договором, теряют силу.
</td>
</tr>
</template>
<template id="contract_inn_kpp_info">
<td>
<b><t t-esc="person.contract_name"/></b><br/>
<b>ИНН</b>: <t t-esc="person.inn"/><br/>
<b>КПП</b>: <t t-esc="person.kpp"/><br/>
</td>
</template>
<template id="contract_payment_template">
<td valign="top">
<b>Расчетный счет</b>: <t t-esc="person.bank_account.acc_number"/><br/>
<b>БИК</b>: <t t-esc="person.bank_account.bank_id.bic"/><br/>
<b>Банк-получатель</b>: <t t-esc="person.bank_account.bank_id.name"/><br/>
<b>Юридический адрес</b>:<br/>
<t t-esc="person.full_adress"/><br/>
<b>Телефон</b>: <t t-esc="person.phone" /><br/>
</td>
</template>
<template id="contract_appex_template">
<table align="left" width="100%">
<tr>
<td>
<b>Приложение 1 к Договору № <t t-esc="doc.contract_id.name"/> от <t t-esc="doc._context_date"/></b>
</td>
</tr>
<tr>
<td>
<b>Спецификация</b>
</td>
</tr>
<tr>
<td>
<table align="center" width="100%" border="1px" cellpadding="5" cellspacing="0" style="border-style:solid; border-color:#000000; border-collapse:collapse">
<tr>
<td align="center" width="30" style="border: 1px solid;"><b></b></td>
<td align="center" style="border: 1px solid;"><b>Товары</b></td>
<td align="center" width="40" style="border: 1px solid;"><b>Кол-во</b></td>
<td align="center" width="30" style="border: 1px solid;"><b>Ед.</b></td>
<td align="center" width="80" style="border: 1px solid;"><b>Цена</b></td>
<td align="center" width="80" style="border: 1px solid;"><b>Сумма</b></td>
</tr>
<t t-set="counter" t-value="0" />
<t t-foreach="doc.order_id.order_line" t-as="line">
<tr>
<t t-set="counter" t-value="counter + 1"></t>
<td align="center" width="30" style="border: 1px solid;"><b><t t-esc="counter" /></b></td>
<td align="center" style="border: 1px solid;"><b><t t-esc="line.name"/></b></td>
<td align="center" width="40" style="border: 1px solid;"><b><t t-esc="line.product_qty" /></b></td>
<td align="center" width="30" style="border: 1px solid;"><b><t t-esc="line.product_uom.name" /></b></td>
<td align="center" width="80" style="border: 1px solid;"><b><t t-esc="line.price_unit" /></b></td>
<td align="center" width="80" style="border: 1px solid;"><b><t t-esc="line.price_total"/></b></td>
</tr>
</t>
</table>
</td>
</tr>
<tr>
<td>
<table align="center" width="100%" border="0px" style="border-collapse:collapse;">
<tr>
<td align="right"><b>Итого:</b></td>
<td align="right" width="130"><b><t t-esc="doc.order_id.amount_untaxed"/></b></td>
</tr>
<tr>
<td align="right"><b>Без налога (НДС)</b></td>
<td align="right" width="130"><b>-</b></td>
</tr>
<tr>
<td align="right"><b>Всего к оплате:</b></td>
<td align="right" width="130"><b><t t-esc="doc.order_id.amount_total"/></b></td>
</tr>
</table>
<table width="100%">
<tr valign="top">
<td colspan="3">
Всего наименований <t t-esc="counter"/>, на сумму <t t-esc="doc.order_id.amount_total"/> руб. (<t t-esc="doc._context_summ_word"/>) .<br />
Поставка осуществляется на условиях: 100% предоплата<br />
Срок поставки - <t t-esc="doc.delivery_terms"/> дн.
</td>
</tr>
<tr valign="top">
<td width="49%">
<br /><b>ПРОДАВЕЦ</b>
</td>
<td width="49%">
<br /><b>ПОКУПАТЕЛЬ</b>
</td>
<td class="to_hide"></td>
</tr>
<tr valign="top">
<td>
<b><t t-esc="doc.company_id.contract_name" /></b><br />
</td>
<td>
</td>
<td>
<b></b><br /></td>
</tr>
<tr>
<td valign="top">
<b><t t-esc="doc.company_id.representative_id.function" />:</b><br />
<t t-esc="doc.company_id.representative_id.name"/></td>
<td valign="top">
<b>Уполномоченный представитель</b>:<br />
</td>
</tr>
<tr valign="top">
<td colspan="3" align="left">
<span id="br1" style="display:none"><br /></span>
<div id="sign1"><div t-field="doc.company_id.representative_id.signature" t-options="{'widget': 'image', 'border':'0', 'width':'100' }"/></div>
</td>
</tr>
<tr valign="top">
<td>
_________________________
</td>
<td>
_________________________
</td>
</tr>
<tr valign="top">
<td>
М.П.
<div id="stamp1">&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;<div t-field="doc.company_id.signature" t-options="{'widget': 'image', 'border':'0', 'width':'100' }"/></div>
</td>
<td>
М.П.
</td>
</tr>
</table>
</td>
</tr>
</table>
</template>
<template id="contract_bottom_contact_data_template">
<table width="100%" border="0">
<tr valign="top">
<td width="49%">
<br/><b>ПРОДАВЕЦ</b>
</td>
<td width="49%">
<br/><b>ПОКУПАТЕЛЬ</b>
</td>
</tr>
<tr valign="top">
<t t-set="person" t-value="doc.company_id"/>
<t t-call="client_contracts.contract_inn_kpp_info"/>
<t t-set="person" t-value="doc.partner_id"/>
<t t-call="client_contracts.contract_inn_kpp_info"/>
</tr>
<tr>
<t t-set="person" t-value="doc.company_id"/>
<t t-call="client_contracts.contract_payment_template"/>
<t t-set="person" t-value="doc.partner_id"/>
<t t-call="client_contracts.contract_payment_template"/>
</tr>
<tr>
<td>
<b><t t-esc="doc.company_id.representative_id.function"/></b>:<br/>
<t t-esc="doc.company_id.representative_id.name"/></td>
<td valign="top">
<b>Уполномоченный представитель</b>:<br/>
<t t-esc="doc.partner_id.representative_id.name" />
</td>
</tr>
<tr valign="top">
<td colspan="3" align="left">
<span id="br" style="display:none"><br/></span>
<div id="sign"><div t-field="doc.company_id.representative_id.signature" t-options="{'widget': 'image', 'border':'0', 'width':'100' }"/></div>
</td>
</tr>
<tr valign="top">
<td>
_________________________
</td>
<td>
_________________________
</td>
</tr>
<tr valign="top">
<td>
М.П.
<div id="stamp">&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;<div t-field="doc.company_id.signature" t-options="{'widget': 'image', 'border':'0', 'width':'100' }"/></div>
</td>
<td>
М.П.</td>
<td class="to_hide"></td>
</tr>
</table>
</template>
<template id="contract_bottom_contact_data_fiz_template">
<table width="100%" border="0">
<tr valign="top">
<td width="49%">
<br/><b>ПРОДАВЕЦ</b>
</td>
<td width="49%">
<br/><b>ПОКУПАТЕЛЬ</b>
</td>
</tr>
<tr valign="top">
<t t-set="person" t-value="doc.company_id"/>
<t t-call="client_contracts.contract_inn_kpp_info"/>
<t t-set="person" t-value="doc.partner_id"/>
<t t-call="client_contracts.contract_inn_kpp_info"/>
</tr>
<tr>
<t t-esc="doc.partner_id.name"/><br/>
<br/>
<br/>
<b>Паспорт</b>:
<t t-esc="doc.partner_id.passport_data"/>
<b>Адрес:</b>
<t t-esc="doc.partner_id.full_adress"/>
<b>Телефон:</b>
<t t-esc="doc.partner_id.phone" />
</tr>
<tr>
<td>
<b><t t-esc="doc.company_id.representative_id.function"/></b>:<br/>
<t t-esc="doc.company_id.representative_id.name"/></td>
<td valign="top">
<br/>
<br/>
</td>
</tr>
<tr valign="top">
<td colspan="3" align="left">
<span id="br" style="display:none"><br/></span>
<div id="sign"><div t-field="doc.company_id.representative_id.signature" t-options="{'widget': 'image', 'border':'0', 'width':'100' }"/></div>
<!--<div id="sign"><img src="pic/rog_sign.png" border="0" width="180"/></div>-->
</td>
</tr>
<tr valign="top">
<td>
_________________________
</td>
<td>
_________________________
</td>
</tr>
<tr valign="top">
<td>
М.П.
<div id="stamp">&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;<div t-field="doc.company_id.signature" t-options="{'widget': 'image', 'border':'0', 'width':'100' }"/></div>
</td>
<td>
</td>
<td class="to_hide"></td>
</tr>
</table>
</template>
<template id="contract_template">
<t t-call="web.html_container">
<t t-foreach="docs" t-as="doc">
<div class="article">
<t t-call="client_contracts.contract_header_template"/>
<table align="tablecenter" border="0px" cellpadding="0" width="100%" style="font-family:Arial; font-size:12px; border-collapse:collapse">
<t t-call="client_contracts.contract_number_and_date"/>
<t t-call="client_contracts.contract_contact_partner_template"/>
</table>
<table align="center" border="0px" cellpadding="0" width="100%" style="font-family:Arial; font-size:12px; border-collapse:collapse">
<t t-call="client_contracts.contract_contact_seller_template"/>
<tr valign="top">
<td colspan="2">
<b>заключили настоящий Договор о нижеследующем:</b>
</td>
</tr>
<t t-call="client_contracts.contract_chapter_1_template"/>
<t t-call="client_contracts.contract_chapter_2_template"/>
<t t-call="client_contracts.contract_chapter_3_template"/>
<t t-call="client_contracts.contract_chapter_4_template"/>
<t t-call="client_contracts.contract_chapter_5_template"/>
<t t-call="client_contracts.contract_chapter_6_template"/>
<t t-call="client_contracts.contract_chapter_7_template"/>
<t t-call="client_contracts.contract_chapter_8_template"/>
<t t-call="client_contracts.contract_chapter_9_template"/>
<t t-call="client_contracts.contract_chapter_10_template"/>
<t t-call="client_contracts.contract_chapter_11_template"/>
<t t-call="client_contracts.contract_chapter_12_template"/>
</table>
<t t-call="client_contracts.contract_bottom_contact_data_template"/>
<p style="page-break-before:always;"> </p>
<t t-call="client_contracts.contract_appex_template"/>
</div>
</t>
</t>
</template>
<template id="contract_fiz_template">
<t t-call="web.html_container">
<t t-foreach="docs" t-as="doc">
<div class="article">
<t t-call="client_contracts.contract_header_template"/>
<table align="tablecenter" border="0px" cellpadding="0" width="100%" style="font-family:Arial; font-size:12px; border-collapse:collapse">
<t t-call="client_contracts.contract_number_and_date"/>
<t t-call="client_contracts.contract_contact_partner_fiz_template"/>
</table>
<table align="center" border="0px" cellpadding="0" width="100%" style="font-family:Arial; font-size:12px; border-collapse:collapse">
<t t-call="client_contracts.contract_contact_seller_template"/>
<tr valign="top">
<td colspan="2">
<b>заключили настоящий Договор о нижеследующем:</b>
</td>
</tr>
<t t-call="client_contracts.contract_chapter_1_template"/>
<t t-call="client_contracts.contract_chapter_2_template"/>
<t t-call="client_contracts.contract_chapter_3_template"/>
<t t-call="client_contracts.contract_chapter_4_template"/>
<t t-call="client_contracts.contract_chapter_5_template"/>
<t t-call="client_contracts.contract_chapter_6_template"/>
<t t-call="client_contracts.contract_chapter_7_template"/>
<t t-call="client_contracts.contract_chapter_8_template"/>
<t t-call="client_contracts.contract_chapter_9_template"/>
<t t-call="client_contracts.contract_chapter_10_template"/>
<t t-call="client_contracts.contract_chapter_11_template"/>
<t t-call="client_contracts.contract_chapter_12_template"/>
</table>
<t t-call="client_contracts.contract_bottom_contact_data_fiz_template"/>
<p style="page-break-before:always;"> </p>
<t t-call="client_contracts.contract_appex_template"/>
</div>
</t>
</t>
</template>
<template id="contract_appex_only_template">
<t t-call="web.html_container">
<t t-foreach="docs" t-as="doc">
<div class="article">
<t t-call="client_contracts.contract_appex_template"/>
</div>
</t>
</t>
</template>
</data>
</odoo>