<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://mediawiki.comfac.net/index.php?action=history&amp;feed=atom&amp;title=Webshop-09-Hooks-and-Events</id>
	<title>Webshop-09-Hooks-and-Events - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://mediawiki.comfac.net/index.php?action=history&amp;feed=atom&amp;title=Webshop-09-Hooks-and-Events"/>
	<link rel="alternate" type="text/html" href="https://mediawiki.comfac.net/index.php?title=Webshop-09-Hooks-and-Events&amp;action=history"/>
	<updated>2026-06-05T11:03:49Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://mediawiki.comfac.net/index.php?title=Webshop-09-Hooks-and-Events&amp;diff=167&amp;oldid=prev</id>
		<title>Justinaquino: &quot;Add all 14 Frappe ERPNext Webshop chapter pages from wikitext-upload&quot;</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.comfac.net/index.php?title=Webshop-09-Hooks-and-Events&amp;diff=167&amp;oldid=prev"/>
		<updated>2026-03-06T13:00:42Z</updated>

		<summary type="html">&lt;p&gt;&amp;quot;Add all 14 Frappe ERPNext Webshop chapter pages from wikitext-upload&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= 09 - Hooks &amp;amp; Events =&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Parent:&amp;#039;&amp;#039;&amp;#039; [Webshop-Index Webshop Index]  &lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Previous:&amp;#039;&amp;#039;&amp;#039; [Webshop-08-Templates-and-Frontend 08 - Templates &amp;amp; Frontend]  &lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Next:&amp;#039;&amp;#039;&amp;#039; [Webshop-10-Feature-Gap-Cart-Discounts 10 - Feature Gap: Cart Discounts]  &lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Source:&amp;#039;&amp;#039;&amp;#039; [https://github.com/Comfac-Global-Group/comfac-webshop/wiki/09-Hooks-and-Events Comfac Webshop Wiki - Chapter 09]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== App Hooks (&amp;lt;code&amp;gt;webshop/hooks.py&amp;lt;/code&amp;gt;) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;python&lt;br /&gt;
= Installation =&lt;br /&gt;
after_install = &amp;quot;webshop.setup.install.after_install&amp;quot;&lt;br /&gt;
&lt;br /&gt;
= Session Management =&lt;br /&gt;
on_logout = &amp;quot;webshop.webshop.shopping_cart.utils.clear_cart_count&amp;quot;&lt;br /&gt;
on_session_creation = [&lt;br /&gt;
    &amp;quot;webshop.webshop.utils.portal.update_debtors_account&amp;quot;,&lt;br /&gt;
    &amp;quot;webshop.webshop.shopping_cart.utils.set_cart_count&amp;quot;,&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
= Website Context =&lt;br /&gt;
update_website_context = [&lt;br /&gt;
    &amp;quot;webshop.webshop.shopping_cart.utils.update_website_context&amp;quot;,&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
= DocType Overrides =&lt;br /&gt;
override_doctype_class = {&lt;br /&gt;
    &amp;quot;Payment Request&amp;quot;: &amp;quot;webshop.webshop.doctype.override_doctype.payment_request.PaymentRequest&amp;quot;,&lt;br /&gt;
    &amp;quot;Item Group&amp;quot;: &amp;quot;webshop.webshop.doctype.override_doctype.item_group.WebshopItemGroup&amp;quot;,&lt;br /&gt;
    &amp;quot;Item&amp;quot;: &amp;quot;webshop.webshop.doctype.override_doctype.item.WebshopItem&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
= DocType Events =&lt;br /&gt;
doc_events = {&lt;br /&gt;
    &amp;quot;Item&amp;quot;: {&lt;br /&gt;
        &amp;quot;on_update&amp;quot;: [&lt;br /&gt;
            &amp;quot;webshop.webshop.crud_events.item.update_website_item.execute&amp;quot;,&lt;br /&gt;
            &amp;quot;webshop.webshop.crud_events.item.invalidate_item_variants_cache.execute&amp;quot;,&lt;br /&gt;
        ],&lt;br /&gt;
        &amp;quot;before_rename&amp;quot;: [&lt;br /&gt;
            &amp;quot;webshop.webshop.crud_events.item.validate_duplicate_website_item.execute&amp;quot;,&lt;br /&gt;
        ],&lt;br /&gt;
        &amp;quot;after_rename&amp;quot;: [&lt;br /&gt;
            &amp;quot;webshop.webshop.crud_events.item.invalidate_item_variants_cache.execute&amp;quot;,&lt;br /&gt;
        ],&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;Quotation&amp;quot;: {&lt;br /&gt;
        &amp;quot;validate&amp;quot;: [&lt;br /&gt;
            &amp;quot;webshop.webshop.crud_events.quotation.validate_shopping_cart_items.execute&amp;quot;,&lt;br /&gt;
        ],&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;Price List&amp;quot;: {&lt;br /&gt;
        &amp;quot;validate&amp;quot;: [&lt;br /&gt;
            &amp;quot;webshop.webshop.crud_events.price_list.check_impact_on_cart.execute&amp;quot;&lt;br /&gt;
        ],&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;Tax Rule&amp;quot;: {&lt;br /&gt;
        &amp;quot;validate&amp;quot;: [&lt;br /&gt;
            &amp;quot;webshop.webshop.crud_events.tax_rule.validate_use_for_cart.execute&amp;quot;,&lt;br /&gt;
        ],&lt;br /&gt;
    },&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
= Website Generators =&lt;br /&gt;
website_generators = [&amp;quot;Website Item&amp;quot;, &amp;quot;Item Group&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
= Website Permissions =&lt;br /&gt;
has_website_permission = {&lt;br /&gt;
    &amp;quot;Website Item&amp;quot;: &amp;quot;webshop.webshop.doctype.website_item.website_item.has_website_permission_for_website_item&amp;quot;,&lt;br /&gt;
    &amp;quot;Item Group&amp;quot;: &amp;quot;webshop.webshop.doctype.website_item.website_item.has_website_permission_for_item_group&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CRUD Events ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Item Events&amp;#039;&amp;#039;&amp;#039; (&amp;lt;code&amp;gt;webshop/webshop/crud_events/item/&amp;lt;/code&amp;gt;):&lt;br /&gt;
&lt;br /&gt;
- &amp;lt;code&amp;gt;update_website_item.execute&amp;lt;/code&amp;gt; - Sync Item → Website Item&lt;br /&gt;
- &amp;lt;code&amp;gt;invalidate_item_variants_cache.execute&amp;lt;/code&amp;gt; - Clear variant cache on save/rename&lt;br /&gt;
- &amp;lt;code&amp;gt;validate_duplicate_website_item.execute&amp;lt;/code&amp;gt; - Prevent duplicate web items&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Quotation Events&amp;#039;&amp;#039;&amp;#039; (&amp;lt;code&amp;gt;webshop/webshop/crud_events/quotation/&amp;lt;/code&amp;gt;):&lt;br /&gt;
&lt;br /&gt;
- &amp;lt;code&amp;gt;validate_shopping_cart_items.execute&amp;lt;/code&amp;gt; - Validate cart items on save&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Price List Events&amp;#039;&amp;#039;&amp;#039; (&amp;lt;code&amp;gt;webshop/webshop/crud_events/price_list/&amp;lt;/code&amp;gt;):&lt;br /&gt;
&lt;br /&gt;
- &amp;lt;code&amp;gt;check_impact_on_cart.execute&amp;lt;/code&amp;gt; - Check if price list changes affect cart&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Tax Rule Events&amp;#039;&amp;#039;&amp;#039; (&amp;lt;code&amp;gt;webshop/webshop/crud_events/tax_rule/&amp;lt;/code&amp;gt;):&lt;br /&gt;
&lt;br /&gt;
- &amp;lt;code&amp;gt;validate_use_for_cart.execute&amp;lt;/code&amp;gt; - Validate tax rules for cart usage&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Navigation:&amp;#039;&amp;#039;&amp;#039; [Webshop-Index Webshop Index] | [Webshop-08-Templates-and-Frontend Previous: 08 - Templates &amp;amp; Frontend] | [Webshop-10-Feature-Gap-Cart-Discounts Next: 10 - Feature Gap: Cart Discounts]&lt;/div&gt;</summary>
		<author><name>Justinaquino</name></author>
	</entry>
</feed>