FriendsOfSylius / SyliusImportExportPlugin

Sylius plugin to import / export data
MIT License
118 stars 82 forks source link

export button on invoice plugin #266

Closed t-n-y closed 3 years ago

t-n-y commented 3 years ago

Hi,

i try to export invoice, from the invoice plugin. I created my own exporter, which is working fine in command line. but can't try a way to display the export button on my admin page.

Here is my services.yaml:

sylius.exporter.invoice.csv:
    class: FriendsOfSylius\SyliusImportExportPlugin\Exporter\ResourceExporter
    arguments:
        - "@sylius.exporter.csv_writer"
        - "@sylius.exporter.pluginpool.sylius_invoicing_plugin.invoice"
        - [ "Numéro de commande", "Date de la commande", "Type de paiement", "Numéro de facture ou d’avoir", "Montant marchandise HT", "Montant livraison HT", "Total HT", "TVA sur la marchandise", "TVA sur la livraison", "Total TVA", "Marchandise TTC", "Livraison TTC", "Total TTC", "Bon d’achat/ avantage" ]
        - "@sylius.exporters_transformer_pool" # Optional
      tags:
          - { name: sylius.exporter, type: sylius_invoicing_plugin.invoice, format: csv }
sylius.exporter.pluginpool.sylius_invoicing_plugin.invoice:
    class: FriendsOfSylius\SyliusImportExportPlugin\Exporter\Plugin\PluginPool
    arguments:
        - [ "@sylius.exporter.plugin.resource.sylius_invoicing_plugin.invoice" ]
        - [ "order_number", "order_date", "payments_method", "Number", "total_items_HT", "total_delivery_HT", "total_HT", "items_taxes", "delivery_taxes", "total_taxes", "item_total_TTC", "total_delivery", "total", "total_promo" ]
sylius.exporter.plugin.resource.sylius_invoicing_plugin.invoice:
    class: App\Exporter\InvoiceExporter
    arguments:
        - "@sylius_invoicing_plugin.repository.invoice"
        - "@property_accessor"
        - "@doctrine.orm.entity_manager"
        - "@sylius.exporter.orm.hydrator.invoices"
        - "@sylius.exporters_transformer_integer_money_format"
        - "@sylius.templating.helper.adjustment"

That part is working fine.

Now i tried to add the button, i see it for order, for exemple, but not on my invoices page.

in my services.yaml
sylius.controller.export_data_invoice:
    public: true
    class: FriendsOfSylius\SyliusImportExportPlugin\Controller\ExportDataController
    arguments:
        - "@sylius.exporters_registry"
        - "@sylius.resource_controller.request_configuration_factory"
        - "@sylius.resource_controller.resources_collection_provider"
        - "@sylius_invoicing_plugin.repository.invoice"
        - "%sylius.resources%"
    tags: ['controller.service_arguments']
in my routes.yaml
app_export_data_invoice:
    path: /admin/export/sylius.invoice/{format}
    methods: [GET]
    defaults:
        resource: sylius_invoicing_plugin.invoice
        _controller: sylius.controller.export_data_invoince:exportAction
        _sylius:
            filterable: true
            grid: sylius_invoicing_plugin_invoice

Am i missing something ? Thanks for your reply

t-n-y commented 3 years ago

In fact, the event of the plugin was not triggered (saw it on the orphan event on the profiler)

so i called the listener myself, passing the good event, and it's working

FriendsOfSylius\SyliusImportExportPlugin\Listener\ExportButtonGridListener:
    arguments:
        - "sylius_invoicing_plugin.invoice"
        - ['csv']
    calls:
        - setRequest: ["@request_stack"]
    tags:
        - { name: kernel.event_listener, event: sylius.grid.invoicing_plugin_invoice, method: onSyliusGridAdmin }