Initial commit: Vendor Sales Report Magento 2 module

This commit is contained in:
shopkeeperdev
2025-11-03 17:20:07 -05:00
commit fc2838d68a
25 changed files with 1839 additions and 0 deletions

21
etc/acl.xml Normal file
View File

@@ -0,0 +1,21 @@
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Acl/etc/acl.xsd">
<acl>
<resources>
<resource id="Magento_Backend::admin">
<resource id="Magento_Reports::report">
<resource id="Magento_Reports::report_salesroot">
<resource id="Shopkeeper_VendorSalesReport::report" title="Vendor Sales Report" sortOrder="999"/>
</resource>
</resource>
<resource id="Magento_Backend::stores">
<resource id="Magento_Backend::stores_settings">
<resource id="Magento_Config::config">
<resource id="Shopkeeper_VendorSalesReport::config" title="Vendor Sales Report"/>
</resource>
</resource>
</resource>
</resource>
</resources>
</acl>
</config>

12
etc/adminhtml/menu.xml Normal file
View File

@@ -0,0 +1,12 @@
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Backend:etc/menu.xsd">
<menu>
<add id="Shopkeeper_VendorSalesReport::report"
title="Vendor Sales Report"
module="Shopkeeper_VendorSalesReport"
sortOrder="999"
parent="Magento_Reports::report_salesroot"
action="vendorsalesreport/report/index"
resource="Shopkeeper_VendorSalesReport::report"/>
</menu>
</config>

8
etc/adminhtml/routes.xml Normal file
View File

@@ -0,0 +1,8 @@
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:App/etc/routes.xsd">
<router id="admin">
<route id="vendorsalesreport" frontName="vendorsalesreport">
<module name="Shopkeeper_VendorSalesReport"/>
</route>
</router>
</config>

55
etc/adminhtml/system.xml Normal file
View File

@@ -0,0 +1,55 @@
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Config:etc/system_file.xsd">
<system>
<tab id="shopkeeper" translate="label" sortOrder="300">
<label>Shopkeeper</label>
</tab>
<section id="vendorsalesreport" translate="label" type="text" sortOrder="100" showInDefault="1" showInWebsite="0" showInStore="0">
<label>Vendor Sales Report</label>
<tab>shopkeeper</tab>
<resource>Shopkeeper_VendorSalesReport::config</resource>
<group id="general" translate="label" type="text" sortOrder="10" showInDefault="1" showInWebsite="0" showInStore="0">
<label>General Settings</label>
<field id="enabled" translate="label comment" type="select" sortOrder="10" showInDefault="1" showInWebsite="0" showInStore="0">
<label>Enable Automated Monthly Report</label>
<source_model>Magento\Config\Model\Config\Source\Yesno</source_model>
<comment>When enabled, report will be generated automatically on the 1st of each month</comment>
</field>
<field id="order_status" translate="label comment" type="multiselect" sortOrder="20" showInDefault="1" showInWebsite="0" showInStore="0">
<label>Order Status Filter</label>
<source_model>Magento\Sales\Model\Config\Source\Order\Status</source_model>
<comment>Select which order statuses to include in the report</comment>
</field>
</group>
<group id="email" translate="label" type="text" sortOrder="20" showInDefault="1" showInWebsite="0" showInStore="0">
<label>Email Settings</label>
<field id="enabled" translate="label comment" type="select" sortOrder="10" showInDefault="1" showInWebsite="0" showInStore="0">
<label>Enable Email</label>
<source_model>Magento\Config\Model\Config\Source\Yesno</source_model>
<comment>Send automated report via email</comment>
</field>
<field id="recipients" translate="label comment" type="text" sortOrder="20" showInDefault="1" showInWebsite="0" showInStore="0">
<label>Email Recipients</label>
<comment>Comma-separated email addresses (e.g., vendor@example.com, admin@example.com)</comment>
<depends>
<field id="enabled">1</field>
</depends>
</field>
<field id="subject" translate="label comment" type="text" sortOrder="30" showInDefault="1" showInWebsite="0" showInStore="0">
<label>Email Subject</label>
<comment>Subject line for automated report emails. Use {{month}} and {{year}} for dynamic values.</comment>
<depends>
<field id="enabled">1</field>
</depends>
</field>
<field id="sender" translate="label" type="select" sortOrder="40" showInDefault="1" showInWebsite="0" showInStore="0">
<label>Email Sender</label>
<source_model>Magento\Config\Model\Config\Source\Email\Identity</source_model>
<depends>
<field id="enabled">1</field>
</depends>
</field>
</group>
</section>
</system>
</config>

16
etc/config.xml Normal file
View File

@@ -0,0 +1,16 @@
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Store:etc/config.xsd">
<default>
<vendorsalesreport>
<general>
<enabled>1</enabled>
<order_status>complete</order_status>
</general>
<email>
<enabled>1</enabled>
<subject>Monthly Thermo Report - {{month}} {{year}}</subject>
<sender>general</sender>
</email>
</vendorsalesreport>
</default>
</config>

8
etc/crontab.xml Normal file
View File

@@ -0,0 +1,8 @@
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Cron:etc/crontab.xsd">
<group id="default">
<job name="shopkeeper_vendorsalesreport_monthly" instance="Shopkeeper\VendorSalesReport\Cron\GenerateMonthlyReport" method="execute">
<schedule>0 2 1 * *</schedule>
</job>
</group>
</config>

4
etc/email_templates.xml Normal file
View File

@@ -0,0 +1,4 @@
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Email:etc/email_templates.xsd">
<template id="vendorsalesreport_email_template" label="Vendor Sales Report Email" file="report.html" type="html" module="Shopkeeper_VendorSalesReport" area="adminhtml"/>
</config>

10
etc/module.xml Normal file
View File

@@ -0,0 +1,10 @@
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
<module name="Shopkeeper_VendorSalesReport" setup_version="1.0.0">
<sequence>
<module name="Magento_Sales"/>
<module name="Magento_Backend"/>
<module name="Magento_Cron"/>
</sequence>
</module>
</config>