{"id":231,"date":"2011-03-18T21:21:56","date_gmt":"2011-03-18T20:21:56","guid":{"rendered":"http:\/\/capri.dev\/blog\/?p=231"},"modified":"2022-11-01T22:34:00","modified_gmt":"2022-11-01T21:34:00","slug":"error-order-creation-failed-creacion-de-pedido-fallida-en-prestashop-1-3-1-1-3-7-y-1-4-16","status":"publish","type":"post","link":"https:\/\/capri.dev\/blog\/error-order-creation-failed-creacion-de-pedido-fallida-en-prestashop-1-3-1-1-3-7-y-1-4-16\/","title":{"rendered":"Error \u00aborder creation failed\u00bb \/ \u00abcreaci\u00f3n de pedido fallida\u00bb en Prestashop 1.3.1, 1.3.7 y 1.4.16"},"content":{"rendered":"<p><strong>For non spanish readers, the short version:<\/strong><\/p>\n<p>The problem is related to your MySQL version. It fails with 5.1.x and 5.5.x versions.<br \/>\nPrestashop 1.3.1 : add the lines:<\/p>\n<pre class=\"prettyprint\">$order->invoice_date = '0000-00-00 00:00:00';\n$order->delivery_date = '0000-00-00 00:00:00';<\/pre>\n<p>just before the order creation ($order-&gt;add()) in your \u00abdamaged\u00bb payment module.<br \/>\nPrestashop 1.4.x : modify your ps_orders table structure:<\/p>\n<pre class=\"prettyprint\">alter table ps_orders modify reference varchar(14) null;<\/pre>\n<p>Prestashop 1.3.7 : Presumably the error is one of both, or related with null values in that table.<\/p>\n<p><strong>Y la historia larga en castellano:<\/strong><\/p>\n<p>Despu\u00e9s de varios d\u00edas buscando una soluci\u00f3n a este error y de no encontrar nada concluyente en la web, por fin he dado con ello.<\/p>\n<p>El error en cuesti\u00f3n ocurr\u00eda al intentar realizar un pago contrarreembolso (m\u00f3dulo cashondelivery) y tambi\u00e9n al intentar realizarlo por transferencia bancaria (m\u00f3dulo bankwire). El pago a trav\u00e9s de PayPal funcionaba correctamente (por suerte).<\/p>\n<p>El problema empez\u00f3 a ocurrir despu\u00e9s de realizar una migraci\u00f3n de servidor de una m\u00e1quina m\u00e1s antigua a una m\u00e1quina m\u00e1s nueva.<\/p>\n<p>Inicialmente pens\u00e9 que el problema era una incompatibilidad entre el PHP instalado en mi nuevo servidor y el c\u00f3digo de mi versi\u00f3n de Prestashop por lo que decid\u00ed actualizar la tienda a la \u00faltima versi\u00f3n. Comprob\u00e9 que el error se segu\u00eda dando en las versiones 1.3 7 y tambi\u00e9n en la 1.4.16.<\/p>\n<p>Un post en <a href=\"http:\/\/www.prestashop.com\/forums\/viewthread\/29422\/third_party_modules\/solved_order_creation_failed_with_every_payment_module_help_1_dot_2_dot_4\/\">http:\/\/www.prestashop.com\/forums\/viewthread\/29422\/third_party_modules\/solved_order_creation_failed_with_every_payment_module_help_1_dot_2_dot_4\/<\/a> me puso sobre la pista de que el problema estaba en la base de datos o en el conector a la base de datos. Despu\u00e9s de trazar las consultas en la base de datos vi que en la versi\u00f3n 1.4.16 la consulta que se intentaba ejecutar :<\/p>\n<pre class=\"prettyprint\">INSERT INTO `ps_orders` (`id_address_delivery`,`id_address_invoice`,`id_c\nart`,`id_currency`,`id_lang`,`id_customer`,`id_carrier`,`secure_key`,`payment`,`\nmodule`,`conversion_rate`,`recyclable`,`gift`,`gift_message`,`shipping_number`,`\ntotal_discounts`,`total_paid`,`total_paid_real`,`total_products`,`total_products\n_wt`,`total_shipping`,`carrier_tax_rate`,`total_wrapping`,`invoice_number`,`deli\nvery_number`,`invoice_date`,`delivery_date`,`valid`,`date_add`,`date_upd`) VALUE\nS ('15','15','690','1','3','3','15','8ebb6bdaaabe8e9daa8f15d774042747','Cash on\ndelivery (COD)','maofree_cashondeliveryfee','1','0','0','BLA:10','','0','91.67',\n'91.67','81.67','81.67','10','0','0','0','0','0000-00-00 00:00:00','0000-00-00 0\n0:00:00','0','2011-03-18 20:02:32','2011-03-18 20:02:32');<\/pre>\n<p>tiraba el error :<\/p>\n<p><code>ERROR 1364 (HY000): Field 'reference' doesn't have a default value<\/code><\/p>\n<p>Lo cual nos llevaba directamente a la causa del problema: en versiones anteriores de la base de datos o del conector, mysql gestionaba los nulls y\/o cadenas vac\u00edas de manera diferente. Lo solucion\u00e9 modificando la estructura de la base de datos permitiendo que el valor de ese campo por defecto fuese null:<\/p>\n<pre class=\"prettyprint\">alter table ps_orders modify reference varchar(14) null;<\/pre>\n<p>En la versi\u00f3n 1.3.1 el error en la consulta no ven\u00eda de este campo sino de los campos invoice_date y delivery_date, a los que no se les asigna un valor por defecto. En este caso la soluci\u00f3n podr\u00eda haber sido la misma, pero prefer\u00ed modificar el c\u00f3digo PHP del m\u00f3dulo cashondelivery a\u00f1adiendo las l\u00edneas :<\/p>\n<pre class=\"prettyprint\">$order->invoice_date = '0000-00-00 00:00:00';\n$order->delivery_date = '0000-00-00 00:00:00';<\/pre>\n<p>en el fichero principal del m\u00f3dulo, en la parte en la que se crea la orden, justo antes de la instrucci\u00f3n $order-&gt;add() que la a\u00f1ade a la base de datos.<\/p>\n<p>He de decir que inicialmente intent\u00e9 esta misma soluci\u00f3n por c\u00f3digo para el caso de la versi\u00f3n 1.4, pero ninguna de las l\u00edneas<\/p>\n<pre class=\"prettyprint\">$order->reference = \"null\";\n$order->reference = \"\";<\/pre>\n<p>a\u00f1adidas en el sitio adecuado surti\u00f3 el efecto deseado y el error persisti\u00f3.<\/p>\n<p>Este error est\u00e1 relacionado con la utilizaci\u00f3n de MySQL 5.5.x y por los reportes de error que he le\u00eddo en algunos posts, tambi\u00e9n con MySQL 5.1.x.<\/p>\n<p>No investigu\u00e9 el error exacto en Prestashop 1.3.7, pero presumiblemente es alguno de estos 2, o est\u00e1 relacionado con valores null en esta tabla.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>For non spanish readers, the short version: The problem is related to your MySQL version. It fails with 5.1.x and 5.5.x versions. Prestashop 1.3.1 : add the lines: $order->invoice_date = &#8216;0000-00-00 00:00:00&#8217;; $order->delivery_date = &#8216;0000-00-00 00:00:00&#8217;; just before the order creation ($order-&gt;add()) in your \u00abdamaged\u00bb payment module. Prestashop 1.4.x : modify your ps_orders table structure: alter table ps_orders modify reference varchar(14) null; Prestashop 1.3.7 : Presumably the error is one of both, or related with null values in that table. Y la historia larga en castellano: Despu\u00e9s de varios d\u00edas buscando una soluci\u00f3n a este error y de no encontrar nada concluyente en la web, por fin he dado con ello. El error en cuesti\u00f3n ocurr\u00eda al intentar realizar un pago contrarreembolso (m\u00f3dulo cashondelivery) y tambi\u00e9n al intentar realizarlo por transferencia bancaria (m\u00f3dulo bankwire). El pago a trav\u00e9s de PayPal funcionaba correctamente (por suerte). El problema empez\u00f3 a ocurrir despu\u00e9s [&hellip;]<\/p>\n<p><a class=\"more-link\" href=\"https:\/\/capri.dev\/blog\/error-order-creation-failed-creacion-de-pedido-fallida-en-prestashop-1-3-1-1-3-7-y-1-4-16\/\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[135,198],"class_list":["post-231","post","type-post","status-publish","format-standard","hentry","category-tecnico","tag-errores-prestashop","tag-tiendas-virtuales"],"_links":{"self":[{"href":"https:\/\/capri.dev\/blog\/wp-json\/wp\/v2\/posts\/231","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/capri.dev\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/capri.dev\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/capri.dev\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/capri.dev\/blog\/wp-json\/wp\/v2\/comments?post=231"}],"version-history":[{"count":0,"href":"https:\/\/capri.dev\/blog\/wp-json\/wp\/v2\/posts\/231\/revisions"}],"wp:attachment":[{"href":"https:\/\/capri.dev\/blog\/wp-json\/wp\/v2\/media?parent=231"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/capri.dev\/blog\/wp-json\/wp\/v2\/categories?post=231"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/capri.dev\/blog\/wp-json\/wp\/v2\/tags?post=231"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}