Jump to content
thirty bees forum

Pedalman

Members
  • Posts

    417
  • Joined

  • Last visited

  • Days Won

    5

Everything posted by Pedalman

  1. I fail to display the total paid tax in invoice.tax-tab.tpl . code pasted from invoice.total-tab.tpl : {if $footer.total_taxes > 0} <tr> <td class="small"> {l s='Total Tax' pdf='true'} </td> <td></td> <td></td> <td class="right small"> {displayPrice currency=$order->id_currency price=$footer.total_taxes} </td> </tr> {/if}
  2. Can you please hint me where to look? I had a look at thirtybeesinstallationdir/log/ and Hetzners root dir where the logs of my domains are saved. I could not notice something triggering the error message that often.
  3. I upgraded to bleeding edge 1.1.1 yesterday and noticed that we receive log warnings via email minutely! Error level is set to 2
  4. And it helps me (better helped since I abandoned ASM years ago due to constanst trouble with it) to controll stock update orders I do. I seldomly receive the amount of articles I ordered to sell and I can remember that ASM gave me here some more controll. May be I only thought so OO
  5. I added today two collumns to oder overview I need and like to see in the overview: 1.) invoice no. 2.) date of order status update These were more than easy to add since Thirtybees uses a bootstrap admin template and columns fit more or less when you add some. You will find the additions in the added code snippet. However, I need a third collumn and this is the most important one for me 3.) If order status history contains payment option "pay via invoice" & not order status ID "payed" then show date of delivery (order status date of deliverstatus ID) and add e.g. 14 days to it and color it red. Else do not show or string 'OK' in green 🙂 You dig it. I use a 'private' payment option that allow customers to buy via inhouse invoice. After 14 days they should have paid the order. Thing is I very much often forget those orders and have problems to controll them. Ok, well, I have an extra order status for them saying "waiting for payment of invoice" but I also forget some time to set this one. So, this collumn could be handy to me since I would see at a glance which orders were checked out via "my inhouse invoice payment" and where I have not set the status "payment received". PS: Best, or an enhancement would be to to add function to invoice payment module to set a certain status automatically (could check via cron). Actually, my pretty old invoice payment options claims to have this functions but it never worked 😞 Advantage of this approach is that I can bundle order status with reminder email for customer. /override/controllers/admin/AdminOrdersController.php <?php class AdminOrdersController extends AdminOrdersControllerCore { // @codingStandardsIgnoreStart /** @var string $toolbar_title */ public $toolbar_title; /** @var array $statuses_array */ protected $statuses_array = []; // @codingStandardsIgnoreEnd /** * AdminOrdersControllerCore constructor. * * @since 1.0.0 */ public function __construct() { /*echo "__construct() OVERRIDE BORIS WORKING"; */ $this->bootstrap = true; $this->table = 'order'; $this->className = 'Order'; $this->lang = false; $this->addRowAction('view'); $this->explicitSelect = true; $this->allow_export = true; $this->deleted = false; $this->context = Context::getContext(); $this->_select = ' a.id_currency, a.id_order AS id_pdf, /* Boris add invoice and update date 2019.12*/ a.invoice_number, a.date_upd, /* //Boris add invoice and update date 2019.12*/ CONCAT(LEFT(c.`firstname`, 1), \'. \', c.`lastname`) AS `customer`, osl.`name` AS `osname`, os.`color`, IF((SELECT so.id_order FROM `'._DB_PREFIX_.'orders` so WHERE so.id_customer = a.id_customer AND so.id_order < a.id_order LIMIT 1) > 0, 0, 1) as new, country_lang.name as cname, IF(a.valid, 1, 0) badge_success'; $this->_join = ' LEFT JOIN `'._DB_PREFIX_.'customer` c ON (c.`id_customer` = a.`id_customer`) LEFT JOIN `'._DB_PREFIX_.'address` address ON address.id_address = a.id_address_delivery LEFT JOIN `'._DB_PREFIX_.'country` country ON address.id_country = country.id_country LEFT JOIN `'._DB_PREFIX_.'country_lang` country_lang ON (country.`id_country` = country_lang.`id_country` AND country_lang.`id_lang` = '.(int) $this->context->language->id.') LEFT JOIN `'._DB_PREFIX_.'order_state` os ON (os.`id_order_state` = a.`current_state`) LEFT JOIN `'._DB_PREFIX_.'order_state_lang` osl ON (os.`id_order_state` = osl.`id_order_state` AND osl.`id_lang` = '.(int) $this->context->language->id.')'; $this->_orderBy = 'id_order'; $this->_orderWay = 'DESC'; $this->_use_found_rows = true; $statuses = OrderState::getOrderStates((int) $this->context->language->id); foreach ($statuses as $status) { $this->statuses_array[$status['id_order_state']] = $status['name']; } $this->fields_list = [ 'id_order' => [ 'title' => $this->l('ID'), 'align' => 'text-center', 'class' => 'fixed-width-xs', ], 'reference' => [ 'title' => $this->l('Reference'), ], 'new' => [ 'title' => $this->l('New client'), 'align' => 'text-center', 'type' => 'bool', 'tmpTableFilter' => true, 'orderby' => false, 'callback' => 'printNewCustomer', ], 'customer' => [ 'title' => $this->l('Customer'), 'havingFilter' => true, ], ]; if (Configuration::get('PS_B2B_ENABLE')) { $this->fields_list = array_merge( $this->fields_list, [ 'company' => [ 'title' => $this->l('Company'), 'filter_key' => 'c!company', ], ] ); } $this->fields_list = array_merge( $this->fields_list, [ 'total_paid_tax_incl' => [ 'title' => $this->l('Total'), 'align' => 'text-right', 'type' => 'price', 'currency' => true, 'callback' => 'setOrderCurrency', 'badge_success' => true, ], 'payment' => [ 'title' => $this->l('Payment'), ], 'osname' => [ 'title' => $this->l('Status'), 'type' => 'select', 'color' => 'color', 'list' => $this->statuses_array, 'filter_key' => 'os!id_order_state', 'filter_type' => 'int', 'order_key' => 'osname', ], 'date_add' => [ 'title' => $this->l('Date'), 'align' => 'text-right', 'type' => 'datetime', 'filter_key' => 'a!date_add', ], /*BORIS 2019.12 'invoice_date' => [ 'title' => $this->l('Invoice Date'), 'align' => 'text-right', 'type' => 'datetime', 'filter_key' => 'a!invoice_date' ],*/ 'invoice_number' => [ 'title' => $this->l('Invoice No'), 'align' => 'text-right', 'type' => 'int', 'filter_key' => 'a!invoice_number' ], 'date_upd' => [ 'title' => $this->l('Update OS'), 'align' => 'text-right', 'type' => 'datetime', 'filter_key' => 'a!date_upd' ], /* //BORIS 2019.12*/ 'id_pdf' => [ 'title' => $this->l('PDF'), 'align' => 'text-center', 'callback' => 'printPDFIcons', 'orderby' => false, 'search' => false, 'remove_onclick' => true, ], ] ); if (Country::isCurrentlyUsed('country', true)) { $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS( ' SELECT DISTINCT c.id_country, cl.`name` FROM `'._DB_PREFIX_.'orders` o '.Shop::addSqlAssociation('orders', 'o').' INNER JOIN `'._DB_PREFIX_.'address` a ON a.id_address = o.id_address_delivery INNER JOIN `'._DB_PREFIX_.'country` c ON a.id_country = c.id_country INNER JOIN `'._DB_PREFIX_.'country_lang` cl ON (c.`id_country` = cl.`id_country` AND cl.`id_lang` = '.(int) $this->context->language->id.') ORDER BY cl.name ASC' ); $countryArray = []; foreach ($result as $row) { $countryArray[$row['id_country']] = $row['name']; } $part1 = array_slice($this->fields_list, 0, 3); $part2 = array_slice($this->fields_list, 3); $part1['cname'] = [ 'title' => $this->l('Delivery'), 'type' => 'select', 'list' => $countryArray, 'filter_key' => 'country!id_country', 'filter_type' => 'int', 'order_key' => 'cname', ]; $this->fields_list = array_merge($part1, $part2); } $this->shopLinkType = 'shop'; $this->shopShareDatas = Shop::SHARE_ORDER; if (Tools::isSubmit('id_order')) { // Save context (in order to apply cart rule) $order = new Order((int) Tools::getValue('id_order')); $this->context->cart = new Cart($order->id_cart); $this->context->customer = new Customer($order->id_customer); } $this->bulk_actions = [ 'updateOrderStatus' => ['text' => $this->l('Change Order Status'), 'icon' => 'icon-refresh'], ]; parent::__construct(); } }
  6. I would give it another try since I see it as Rampage suggested. I had his problem often in the last 8 years and always it was related to caching problems. (These are not only the settings you set in your BO but also those used by your ' host'. In my case I I had issues some times in the past with php additions like APC and OPcache. Also with activated mod_pagespeed I had issues. But all this is not my domain but if you know those terms and know where to de-/activate them you could give it a try.) Make also sure that in your performance settings cache (APC etc.) and full page caching (both more at the bottom part of performance settings) are disabled for testing your problem. I had excactly the same problems as said and sometimes a translations appeared correctly literally the next day on front/back.
  7. I try to clean up my product descriptiond and meta data from old html tags like span and div. I did export my data via Datakick module and also via csv export from /bo/catalog. I openend the data in my two favorite tools VisualCode and Scalc and did some search and replace routines. Regex does help here immensely but I am all than used to regex. So I wonder if iht would not be nice to have all in one place, namely Thirtybees. Would be great to expand its export capabilities with some cleaning functions. I do not know but assume that the HtmlPurifier does something like this and perhaps it is quickly doable to habe a product/categorie data export feature with splitscreen (left real data/right preview). I think data shold be presented in tables like Scalc does. Anyhow, how do you groom your product data?
  8. I am sorry about me complaining too early. My issue was related to my local db set up. The override works fine. As always you have to delete class_index.php in /cache/ to make override work. If it is ok please delete my posts here since they are obsolete. Thanks
  9. Oh, that is good to hear. I will check my other installations. ! update: I did so and no problems at all on my live server with the override. All I had to to as always with overrides was to delete the class_index.php file in /cache/ ( Absolutely my fault. The problem I faced is realted to the way I set up my local database. I could not get it working with a clone of my live shop. This clone runs local on Xampp. With debug on I could not get the export beining generated due to the errow message shown: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ' a.`reference`, NULL AS features, NULL AS tags, supplier.`name` AS supplier_name' at line 3 in file classes/db/Db.php at line 488 With debug off I could generate the csv ! very nice but else than expected it contained only the 'header line' without any articles. These I had checked in product list. )
  10. Moreover, crucial things like invoices and credit slips should work. If merchants notice irregualarities or even bugs I assume it'd be appropriate if a team leader shows he took notice of it and does all a fix is introduced. Merchants use live shops and no test shops 🙂 So, I am asking for help here for a proper order-slip.total-tab.tpl
  11. looking for way to sort invoice articles via article ref
  12. I triesd the override but it reported to be incompatible with latest TB (debug on). Could please someone capable check, cause I like this override and'd be very handy.
  13. solved. see next post (Ehm, I made the experience using this override that it reports to be incompatible with TB (latest stable). It would be very great if some one capable could test it.)
  14. Theo, thanks for the advice on the link but ! please delete it in your citation, too!

    Thank you

    1. Acer

      Acer

      Hi

      Somehow the link was deleted from the citation as well 🙂

  15. Da hatte ich wohl was falsch in Erinnerung. Ich dachte immer, "Setze Bestellung auf "Bezahlt"" sorgt für mind. zwei Dinge: a) Rechnung wird generiert b) Statistik im Dashbooard arbeitet richtig Sieht so aus, dass ich die Rechnung auch mit dem "Download der PDF Rechnung erlauben" generieren kann. Damit wäre das geklärt. Danke für den Screenshot!
  16. I bought some years ago a module called: PrestaVaultMalware | Virus | Trojan Protection by prestashopaddons.prestaheroes.com . What I bought was the Prestaversion. Since ca. two years he or they support also THIRTYBEES ! Sad for me is he wanted me to buy the module again extra for Thirtybees. I denied and use since years the Presta version on my Thirtybees shop. Thing is it seems to work. If I could I would enhance the module with the function to show also who used the back office and when. You can see this of course in logs but I 'd like to have it in once place. File monitoring (size and date) that is what the module does and also a view for backoffice use times. Best would be a detailed view that could break down if files where changes when xzy was logged into bo. Best would be if you could also implement FTP connection via server log 🙂 Oh, and btw the module seems to do its job via doing a backup of all files, storing some hash in db with the original files (your table for the module will grow very big in db 😉 ) and the do a comparrison check. In a nutshell you got also a back up you can restore from module gui. All in all a very fine module that is worth its price!
  17. Wie in alten Zeiten occam 🙂 Wir reden an einander vorbei. Aber ist meine Schuld. ... " muss ich 'einen' Status haben, der auf bezahlt steht. " damit meinte ich, einen Status, der die Bestellung als bezahlt=1 setzt in der db. Oder wie auch immer, Du hast es treffend ausgedrückt und geholfen. Danke sehr.
  18. Ich bin glücklicher Chex Kunde, aber diese erweiterten Merkmale werden bei mir auch nicht angezeigt. Ich hoffe ehrlich, dass dieses bei unseren Artikeln auch unnötig ist, da es den checkout unübersichtlich gestalten würden (mobilview).
  19. Als ich schrieb " Aber um eine Rechnung aus zu drucken, muss die Order auf "bezahlt" stehen. ", da meinte ich es generell, also nicht wörtlich. Ich wollte damit sagen, wenn ich eine Rechnung generieren und ausdrucken will, so muss ich 'einen' Status haben, der auf bezahlt steht. Unsere Kunden, die auf Rechnung kaufen, bekommen ja auch eine Rechnung beigelegt... Und somit habe ich natürlich auch immer mal wieder Rechnungen im Sytem (inkrementelle RE-Nr...), für die kein Geld geflossen ist.* Und somit sollte es auch richtig sein, dass ich diese dann ebenfalls via Teil-/Rückerstattung, welches ja für die Generierung des Rückerstattungsdokuments nötig ist, aufhebe. Für diesen Vorgang brauche ich nicht das RMA System in TB aktivieren und eigentlich auch den Bestellstatus 'storniert' nicht. *) entweder, weil der Kunde vor Versand vom Kauf zurücktritt, oder nach erhalt der Ware sich entscheidet zu Widerrufen oder Mängel feststellt und nicht zahlen will
  20. Sorry, but I mostly I am just a merchant and I do not know the tools to get things done nicely. Frist question is if there is a way to highlight visually all the hooks of a certain page? I am thinking about a "dev mode" I switch on and on each pages {hookxyz} is being highlighted. I can so quickly see what is supported and what not. Second I totally failed the most easiest part obviously. I always wanted a custom action bar in my bo/orders & bo/ordersdetails in order to batch create orderstatus and print invoice etc. I know the button at the buttom but I am lazy and do repetitive stuff a handy action bar at the top would be nice (like the ancient kpi bar I modified in the past but I like cutom block hooks more! It is great Lesly). My code I tried to hook into admin office tab adminorder is <div class="well hidden-print"> <a class="btn btn-default"> <i class="icon-print"></i> Print order </a><a data-selenium-id="view_invoice" class="btn btn-default _blank" href="index.php?controller=AdminPdf&&submitAction=generateInvoicePDF&id_order=SELECTED" target="_blank"> <i class="icon-file"></i> View invoice </a> <span class="span label label-inactive"> <i class="icon-remove"></i> No delivery slip </span> <a id="desc-order-partial_refund" class="btn btn-default" href="#refundForm"> <i class="icon-exchange"></i> Partial refund </a></div> <div class="well hidden-print"> <a class="btn btn-default"> <i class="icon-print"></i> Print order </a> <a data-selenium-id="view_invoice" class="btn btn-default _blank" href="index.php?controller=AdminPdf&&submitAction=generateInvoicePDF&id_order=SELECTED" target="_blank"> <i class="icon-file"></i> View invoice </a> <span class="span label label-inactive"> <i class="icon-remove"></i> No delivery slip </span> <a id="desc-order-partial_refund" class="btn btn-default" href="#refundForm"> <i class="icon-exchange"></i> Partial refund </a></div> You see it is just a copy but should show. In my case it does not 😞
  21. You could try the German agency Silbersaiten. I remember they had such a module in the past but do not expect best service or modern gui style of modules.
  22. Ihr habt ja recht, es nervt. Ich werde mir bei Zeiten dann mal die Warenkorbregeln genauer ansehen und Datakick hat ja auch ein super IFTT Modul geschrieben, welches hier weiter helfen könnte. Ob ich es so weit auf die Spitze treibe oder einfach mit dem Übel lebe, muss ich mal sehen 🙂
  23. Ich wollte den schon vorhandenen Beitrags-thread nicht nutzen, da ich eine Lösung bzw. Lösungswege von deutschen Nutzern für Deutschland suche. Ich hoffe, dass das in Ordnung geht. Original: how to handle returns Hallo ich habe mir heute auch mal unseren workflow angesehen und mir so meine Gedanken gemacht. Das Problem ist bei uns, dass wir immer! eine Rechung dem Paket beilegen. Das handhaben wir so seid Jahren und ich halte es für gut, weil sonst immer wieder mal Kunden anrufen, nur wegen der fehlenden Rechnung. Auch rechtlich gesehen ist es so in Ordnung denke ich, denn nur via email eine Rechnung zu versenden...Aber vielleicht bin ich da altbacken. Aber um eine Rechnung aus zu drucken, muss die Order auf "bezahlt" stehen. Das hat zwei merkwürdige Konsequenzen: a) Kunde bekommt eine email mit Inhalt, der hätte die Order bezahlt, obwohl er ja via 'Kredit' sprich Rechnungskauf eingekauft hat. b) Überlegt der Kunde es sich anders und ich versende nicht, habe ich das Problem, dass schon eine Rechung erstellt wurde. In der Datenbank und beim Kunden, via Email. Ich habe es immer so verstanden, dass diese dann auch 'wieder aufgehoben werden muss' via Rückerstattung, damit alles stimmt. Sonst würde ja eine RE vorliegen, die nie bezahlt wurde. Aber eine Rückerstattung, wenn gar kein Geld transferiert wurde? Scheint mir auch nicht zu stimmen.
  24. Well, I am interested in learning new stuff and I want to improve my daily workflow constantly. So, instead of dealing any further with XAMPP under Windows I would like to know which is the proper way to go. I use since years virtual machines and have stick with VirtualBox. As far as I good dig Bitnami for example hosts ready to go images for virtual machines. Especially interesting might be here the bitnami-lampstack-7.3.9-0-linux-debian-9-x86_64.ova . I also have a nas running with XPenology and some docker containers. Is this a good idea for testing new modules and functions in TB or too complicated and less user friendly than a virtual machine. This I could take anywhere (Mac, Linus, 'Win) and blow it up with software i usually use when doing stuff on my TB install.
  25. Hallo, wie geht Ihr mit niederpreisigen Bestellungen um, die die Marge auffressen? Eine rechtlich korrekte Lösung wäre der Mindermengenzuschlag, wenn korrekt umgesetzt. Hat jemand eine Lösung im Betrieb?
×
×
  • Create New...