Hallo zusammen,
ich bin seit einigen Tagen aufgeschmissen… und komme nicht weiter.
Ich möchte mir eine Packliste erstellen, diese wird aktuell auch im Backend angezeigt. Jedoch will ich diese auch ausdrucken können, jedoch finde ich keinen geeigneten Weg diese exportieren zu können.
Gibt es von Shopware eine Funktion mit der ich daten exportieren kann?
Ich habe die gewünschten Daten in einem Table zur Verfügung… Ich habe mich an dem Exporter package von Sencha ausprobiert… jedoch ohne Erfolg ebenfalls mit FPDF usw…
Kann mir wer weiter helfen bitte?
Oder gibt es einen Freelance, der mir unter die Arme greifen kann… (natürlich gegen Bezahlung )?
Bootstrap:
class Shopware_Plugins_Backend_Packliste_Bootstrap extends Shopware_Components_Plugin_Bootstrap
{
/**
* Label for plugin.
*
* @return string
*/
public function getLabel()
{
return 'Packliste';
}
/**
* Version for plugin.
*
* @return string
*/
public function getVersion()
{
return '1.0.00';
}
/**
* Informations about plugin.
*
* @return array
*/
public function getInfo()
{
return array(
'version' => $this->getVersion(),
'label' => $this->getLabel(),
'author' => 'Sven Nagel',
'copyright' => 'Copyright © ' . date('Y') . ', Sven Nagel'
);
}
public function install()
{
$this->createDatabase();
$this->subscribeEvent(
'Enlight_Controller_Dispatcher_ControllerPath_Backend_Packliste',
'getBackendController'
);
$this->createMenuItem(array(
'label' => 'Packliste',
'controller' => 'Packliste',
'class' => 'sprite-application-block',
'action' => 'Index',
'active' => 1,
'parent' => $this->Menu()->findOneBy(['label' => 'Kunden'])
));
$this->createPdf();
return array('success' => true, 'invalidateCache' => array('config', 'frontend', 'backend', 'proxy'));
}
/**
* Remove attributes from table
*
* @return bool
*/
public function uninstall()
{
$this->removeDatabase();
$menuItem = $this->Menu()->findOneBy(array('label' => 'Packliste'));
Shopware()->Models()->remove($menuItem);
Shopware()->Models()->flush();
return true;
}
public function getBackendController(Enlight_Event_EventArgs $args)
{
// Register the template directory to not have to provide it
// in the controller every time
$this->Application()->Template()->addTemplateDir(
$this->Path() . 'Views/'
);
// Register the models to have access to them in the controller
$this->registerCustomModels();
return $this->Path() . '/Controllers/Backend/Packliste.php';
}
protected function registerCustomModels()
{
$this->Application()->Loader()->registerNamespace(
'Shopware\Models\Packliste', $this->Path() . 'Models/'
);
$this->Application()->ModelAnnotations()->addPaths(
array(
$this->Path() . 'Models/',
)
);
}
/**
* Creates database table based on Packlist model
*/
private function createDatabase()
{
// Register namespace and annotations for custom model
$this->registerCustomModels();
// Create schema for custom model
$this->executeSchemaAction('createSchema');
}
/**
* Drops database table based on Packlist model
*/
private function removeDatabase()
{
// Unregister namespace and annotations for custom model
$this->registerCustomModels();
// Remove schema for custom model
$this->executeSchemaAction('dropSchema');
}
private function executeSchemaAction($action)
{
$em = $this->Application()->Models();
$tool = new \Doctrine\ORM\Tools\SchemaTool($em);
$classes = array(
$em->getClassMetadata('Shopware\Models\Packliste\Packliste'),
);
try {
$tool->$action($classes);
} catch (\Doctrine\ORM\Tools\ToolsException $e) {
//ignore
}
IF($action == 'createSchema'){
$this->addData();
} ELSE {
};
}
protected function addData()
{
$sql = "
INSERT INTO s_pack_model(id, orderId, cnumber, articleId, articleNumber, articleName, quantity, sumOrder)
SELECT
s_order_details.id,
s_order_details.orderID,
s_order.ordernumber,
s_order_details.articleID,
s_order_details.articleordernumber,
s_order_details.name,
s_order_details.quantity,
SUM(s_order_details.quantity) AS sumOrder
FROM s_order_details, s_order
WHERE s_order_details.ordernumber = s_order.ordernumber AND s_order.status='0'
GROUP BY s_order_details.name
";
Shopware()->Db()->query($sql);
}
protected function createPdf()
{
}
Controller:
class Shopware_Controllers_Backend_Packliste extends Shopware_Controllers_Backend_Application
{
protected $model = 'Shopware\Models\Packliste\Packliste';
protected $alias = 'Packliste';
public function init()
{
$this->View()->addTemplateDir(dirname( __FILE__ ) . "/Views/");
parent::init();
}
}
ExtJS: -> Ich poste gerne die anderen Klassen auch. Mein Ansatz war, dass ich mir einen Button initalisiert habe der bei einem Klick die Daten exportiert.
Ext.define('Shopware.apps.Packliste.view.list.Packliste', {
extend: 'Shopware.grid.Panel',
alias: 'widget.product-listing-grid',
region: 'center',
configure: function() {
return {
columns: {
articleNumber: 'Artikelnummer',
articleName: 'Artikelname',
sumOrder: 'Menge'
}
};
},
createToolbarItems: function() {
var me = this,
items = me.callParent(arguments);
items = Ext.Array.insert(
items,
2,
[me.createToolbarButton()]
);
return items;
},
createToolbarButton: function() {
var me = this;
return Ext.create('Ext.button.Button', {
text: 'Druck erstellen',
handler: function() {
me.getContent()
}
});
},
getContent: function() {
}
});
Vielen Dank vorab.
Grüße,
Sven