diff --git a/connector_magento_payment_ref/README.rst b/connector_magento_payment_ref/README.rst new file mode 100644 index 000000000..92f431a02 --- /dev/null +++ b/connector_magento_payment_ref/README.rst @@ -0,0 +1,65 @@ +.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 + + +=================================== +Connector Magento Payment Reference +=================================== + +This module let's you define on the payment method the path to a value to use as transaction id into +the informations of a sale order returned as json by magento and map this information into +the transaction_id field defined by OCA/bank-statement-reconcile/base_transaction_id. + +The main purpose is to ease the reconciliation process. + +Configuration +============= + +For each payment method, you can define the path to the transaction_id value in +the informations provided by magento. + + +Usage +===== + +.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas + :alt: Try me on Runbot + :target: https://runbot.odoo-community.org/runbot/107/10.0 + + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues +`_. In case of trouble, please +check there if your issue has already been reported. If you spotted it first, +help us smashing it by providing a detailed and welcomed feedback. + +Credits +======= + +Images +------ + +* Odoo Community Association: `Icon `_. + +Contributors +------------ + +* Laurent Mignon + +Maintainer +---------- + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +This module is maintained by the OCA. + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +To contribute to this module, please visit https://odoo-community.org. \ No newline at end of file diff --git a/magentoerpconnect_transaction_id/__init__.py b/connector_magento_payment_ref/__init__.py similarity index 64% rename from magentoerpconnect_transaction_id/__init__.py rename to connector_magento_payment_ref/__init__.py index a0fdc10fe..2c3864d62 100644 --- a/magentoerpconnect_transaction_id/__init__.py +++ b/connector_magento_payment_ref/__init__.py @@ -1,2 +1,3 @@ # -*- coding: utf-8 -*- from . import models +from . import components diff --git a/magentoerpconnect_transaction_id/__openerp__.py b/connector_magento_payment_ref/__manifest__.py similarity index 67% rename from magentoerpconnect_transaction_id/__openerp__.py rename to connector_magento_payment_ref/__manifest__.py index 71ffc7c3a..a499098d0 100644 --- a/magentoerpconnect_transaction_id/__openerp__.py +++ b/connector_magento_payment_ref/__manifest__.py @@ -7,16 +7,18 @@ Map the payment identifier in your sale order""", 'author': 'ACSONE SA/NV,' 'Odoo Community Association (OCA)', - 'website': "http://acsone.eu", + 'website': 'https://github.com/OCA/connector-magento', 'category': 'Connector', - 'version': '8.0.1.0.0', + 'version': '10.0.1.0.0', 'license': 'AGPL-3', 'depends': [ - 'magentoerpconnect', - 'sale_payment_method', + 'component', + 'connector', + 'connector_magento', + 'account_payment_mode', 'base_transaction_id', ], 'data': [ - 'views/payment_method_view.xml', + 'views/account_payment_mode.xml', ], } diff --git a/connector_magento_payment_ref/components/__init__.py b/connector_magento_payment_ref/components/__init__.py new file mode 100644 index 000000000..d92facc37 --- /dev/null +++ b/connector_magento_payment_ref/components/__init__.py @@ -0,0 +1,2 @@ +# -*- coding: utf-8 -*- +from . import sale_order_import_mapper diff --git a/connector_magento_payment_ref/components/sale_order_import_mapper.py b/connector_magento_payment_ref/components/sale_order_import_mapper.py new file mode 100644 index 000000000..c18d90ac9 --- /dev/null +++ b/connector_magento_payment_ref/components/sale_order_import_mapper.py @@ -0,0 +1,25 @@ +# -*- coding: utf-8 -*- +# Copyright 2017 ACSONE SA/NV () +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html) +from odoo.addons.component.core import Component +from odoo.addons.connector.components.mapper import mapping + + +class SaleOrderImportMapper(Component): + _inherit = 'magento.sale.order.mapper' + + @mapping + def payment(self, record): + vals = super(SaleOrderImportMapper, self).payment(record) + payment_mode_id = vals.get('payment_mode_id') + if payment_mode_id: + payment_mode = self.env['account.payment.mode'].browse( + payment_mode_id) + if payment_mode.transaction_id_path: + value = record + for key in payment_mode.transaction_id_path.split('.'): + value = value.get(key) + if not value: + break + vals['transaction_id'] = value + return vals diff --git a/connector_magento_payment_ref/models/__init__.py b/connector_magento_payment_ref/models/__init__.py new file mode 100644 index 000000000..b02721223 --- /dev/null +++ b/connector_magento_payment_ref/models/__init__.py @@ -0,0 +1,2 @@ +# -*- coding: utf-8 -*- +from . import account_payment_mode diff --git a/magentoerpconnect_transaction_id/models/payment_method.py b/connector_magento_payment_ref/models/account_payment_mode.py similarity index 81% rename from magentoerpconnect_transaction_id/models/payment_method.py rename to connector_magento_payment_ref/models/account_payment_mode.py index 3109f362a..0055f4919 100644 --- a/magentoerpconnect_transaction_id/models/payment_method.py +++ b/connector_magento_payment_ref/models/account_payment_mode.py @@ -2,11 +2,11 @@ # Copyright (c) 2015 ACSONE SA/NV () # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). -from openerp import models, fields +from odoo import models, fields -class PaymentMethod(models.Model): - _inherit = 'payment.method' +class AccountPaymentMode(models.Model): + _inherit = 'account.payment.mode' transaction_id_path = fields.Char( help=('Path to the value into the informations provided by Magento ' diff --git a/connector_magento_payment_ref/static/description/icon.png b/connector_magento_payment_ref/static/description/icon.png new file mode 100644 index 000000000..80fb1c9ac Binary files /dev/null and b/connector_magento_payment_ref/static/description/icon.png differ diff --git a/connector_magento_payment_ref/tests/__init__.py b/connector_magento_payment_ref/tests/__init__.py new file mode 100644 index 000000000..f45400066 --- /dev/null +++ b/connector_magento_payment_ref/tests/__init__.py @@ -0,0 +1,2 @@ +# -*- coding: utf-8 -*- +from . import test_sale_order diff --git a/connector_magento_payment_ref/tests/fixtures/cassettes/import_sale_order_transaction_id.yaml b/connector_magento_payment_ref/tests/fixtures/cassettes/import_sale_order_transaction_id.yaml new file mode 100644 index 000000000..da54cb7cf --- /dev/null +++ b/connector_magento_payment_ref/tests/fixtures/cassettes/import_sale_order_transaction_id.yaml @@ -0,0 +1,948 @@ +interactions: +- request: + body: !!python/unicode ' + + + + login + + + + + + odoo + + + + + + odoo42 + + + + + + + + ' + headers: + Accept-Encoding: [gzip] + Content-Length: ['209'] + Content-Type: [text/xml] + User-Agent: [xmlrpclib.py/1.0.1 (by www.pythonware.com)] + method: POST + uri: http://magento/index.php/api/xmlrpc + response: + body: {string: !!python/unicode ' + + 7bd8047fd69712b39406280c699cf678'} + headers: + cache-control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0'] + connection: [keep-alive] + content-type: [text/xml; charset=UTF-8] + date: ['Fri, 30 Jun 2017 12:41:04 GMT'] + expires: ['Thu, 19 Nov 1981 08:52:00 GMT'] + pragma: [no-cache] + server: [nginx/1.10.2] + set-cookie: ['PHPSESSID=gam9d4rulhoivfbnegkfc85n31; expires=Fri, 30-Jun-2017 + 13:41:04 GMT; path=/; domain=magento; HttpOnly'] + x-powered-by: [PHP/5.3.3] + status: {code: 200, message: OK} +- request: + body: !!python/unicode ' + + + + call + + + + + + 7bd8047fd69712b39406280c699cf678 + + + + + + sales_order.info + + + + + + + + 100000201 + + + + + + + + + + ' + headers: + Accept-Encoding: [gzip] + Content-Length: ['344'] + Content-Type: [text/xml] + User-Agent: [xmlrpclib.py/1.0.1 (by www.pythonware.com)] + method: POST + uri: http://magento/index.php/api/xmlrpc + response: + body: {string: !!python/unicode ' + + statenewstatuspendingcoupon_codeprotect_code13520dshipping_descriptionUnited + Parcel Service - Groundis_virtual0store_id1customer_id136base_discount_amount0.0000base_discount_canceledbase_discount_invoicedbase_discount_refundedbase_grand_total387.2700base_shipping_amount12.3100base_shipping_canceledbase_shipping_invoicedbase_shipping_refundedbase_shipping_tax_amount0.0000base_shipping_tax_refundedbase_subtotal344.0000base_subtotal_canceledbase_subtotal_invoicedbase_subtotal_refundedbase_tax_amount30.9600base_tax_canceledbase_tax_invoicedbase_tax_refundedbase_to_global_rate1.0000base_to_order_rate1.0000base_total_canceledbase_total_invoicedbase_total_invoiced_costbase_total_offline_refundedbase_total_online_refundedbase_total_paidbase_total_qty_orderedbase_total_refundeddiscount_amount0.0000discount_canceleddiscount_invoiceddiscount_refundedgrand_total387.2700shipping_amount12.3100shipping_canceledshipping_invoicedshipping_refundedshipping_tax_amount0.0000shipping_tax_refundedstore_to_base_rate1.0000store_to_order_rate1.0000subtotal344.0000subtotal_canceledsubtotal_invoicedsubtotal_refundedtax_amount30.9600tax_canceledtax_invoicedtax_refundedtotal_canceledtotal_invoicedtotal_offline_refundedtotal_online_refundedtotal_paidtotal_qty_ordered3.0000total_refundedcan_ship_partiallycan_ship_partially_itemcustomer_is_guest0customer_note_notify1billing_address_id355customer_group_id1edit_incrementemail_sent1forced_shipment_with_invoicepayment_auth_expirationquote_address_idquote_id619shipping_address_id356adjustment_negativeadjustment_positivebase_adjustment_negativebase_adjustment_positivebase_shipping_discount_amount0.0000base_subtotal_incl_tax374.9600base_total_duepayment_authorization_amountshipping_discount_amount0.0000subtotal_incl_tax374.9600total_dueweight3.0000customer_dobincrement_id100000201applied_rule_idsbase_currency_codeUSDcustomer_emailjanedoe@magento.comcustomer_firstnameJanecustomer_lastnameDoecustomer_middlenamecustomer_prefixcustomer_suffixcustomer_taxvatdiscount_descriptionext_customer_idext_order_idglobal_currency_codeUSDhold_before_statehold_before_statusorder_currency_codeUSDoriginal_increment_idrelation_child_idrelation_child_real_idrelation_parent_idrelation_parent_real_idremote_ip198.228.200.167shipping_methodups_GNDstore_currency_codeUSDstore_nameMain + Website + + Madison Island + + Englishx_forwarded_forcustomer_notecreated_at2013-05-25 + 21:37:05updated_at2013-05-25 + 21:37:06total_item_count2customer_genderhidden_tax_amount0.0000base_hidden_tax_amount0.0000shipping_hidden_tax_amount0.0000base_shipping_hidden_tax_amnt0.0000hidden_tax_invoicedbase_hidden_tax_invoicedhidden_tax_refundedbase_hidden_tax_refundedshipping_incl_tax12.3100base_shipping_incl_tax12.3100coupon_rule_namepaypal_ipn_customer_notified0gift_message_idbase_customer_balance_amount0.0000customer_balance_amount0.0000base_customer_balance_invoicedcustomer_balance_invoicedbase_customer_balance_refundedcustomer_balance_refundedbs_customer_bal_total_refundedcustomer_bal_total_refundedgift_cardsa:0:{}base_gift_cards_amount0.0000gift_cards_amount0.0000base_gift_cards_invoicedgift_cards_invoicedbase_gift_cards_refundedgift_cards_refundedgw_idgw_allow_gift_receipt0gw_add_card0gw_base_price0.0000gw_price0.0000gw_items_base_price0.0000gw_items_price0.0000gw_card_base_price0.0000gw_card_price0.0000gw_base_tax_amount0.0000gw_tax_amount0.0000gw_items_base_tax_amount0.0000gw_items_tax_amount0.0000gw_card_base_tax_amount0.0000gw_card_tax_amount0.0000gw_base_price_invoicedgw_price_invoicedgw_items_base_price_invoicedgw_items_price_invoicedgw_card_base_price_invoicedgw_card_price_invoicedgw_base_tax_amount_invoicedgw_tax_amount_invoicedgw_items_base_tax_invoicedgw_items_tax_invoicedgw_card_base_tax_invoicedgw_card_tax_invoicedgw_base_price_refundedgw_price_refundedgw_items_base_price_refundedgw_items_price_refundedgw_card_base_price_refundedgw_card_price_refundedgw_base_tax_amount_refundedgw_tax_amount_refundedgw_items_base_tax_refundedgw_items_tax_refundedgw_card_base_tax_refundedgw_card_tax_refundedreward_points_balance0base_reward_currency_amount0.0000reward_currency_amount0.0000base_rwrd_crrncy_amt_invoicedrwrd_currency_amount_invoicedbase_rwrd_crrncy_amnt_refndedrwrd_crrncy_amnt_refundedreward_points_balance_refundreward_points_balance_refundedreward_salesrule_pointsimported0payment_authorization_expirationforced_do_shipment_with_invoicebase_shipping_hidden_tax_amount0.0000order_id181shipping_addressparent_id181customer_address_id92quote_address_idregion_id12customer_id136faxregionCaliforniapostcode90232lastnameDoestreet10441 + Jefferson Blvd, Suite 200cityCulver + Cityemailjanedoe@magento.comtelephone888-888-8888country_idUSfirstnameJaneaddress_typeshippingprefixmiddlenamesuffixcompanyvat_idvat_is_validvat_request_idvat_request_datevat_request_successgiftregistry_item_idaddress_id356billing_addressparent_id181customer_address_id92quote_address_idregion_id12customer_id136faxregionCaliforniapostcode90232lastnameDoestreet10441 + Jefferson Blvd, Suite 200cityCulver + Cityemailjanedoe@magento.comtelephone888-888-8888country_idUSfirstnameJaneaddress_typebillingprefixmiddlenamesuffixcompanyvat_idvat_is_validvat_request_idvat_request_datevat_request_successgiftregistry_item_idaddress_id355itemsitem_id543order_id181parent_item_idquote_item_id2320store_id1created_at2013-05-25 + 21:37:06updated_at2013-05-25 + 21:37:06product_id418product_typeconfigurableproduct_optionsa:10:{s:15:"info_buyRequest";a:7:{s:4:"uenc";s:96:"aHR0cDovL2FraXppYW4udGVhbS5tYWdlbnRvLmNvbS9jYXRhbG9nL3Byb2R1Y3Qvdmlldy9pZC80MTgvY2F0ZWdvcnkvMTEv";s:7:"product";s:3:"418";s:8:"form_key";s:16:"sj7gV8wdnPmbJkIX";s:15:"related_product";s:0:"";s:15:"super_attribute";a:2:{i:92;s:2:"26";i:180;s:2:"81";}s:3:"qty";s:1:"2";s:10:"return_url";s:0:"";}s:15:"attributes_info";a:2:{i:0;a:2:{s:5:"label";s:5:"Color";s:5:"value";s:6:"Indigo";}i:1;a:2:{s:5:"label";s:4:"Size";s:5:"value";s:2:"XS";}}s:11:"simple_name";s:9:"Tori + Tank";s:10:"simple_sku";s:8:"wbk003xs";s:20:"product_calculations";i:1;s:13:"shipment_type";i:0;s:17:"giftcard_lifetime";N;s:22:"giftcard_is_redeemable";i:0;s:23:"giftcard_email_template";N;s:13:"giftcard_type";N;}weight1.0000is_virtual0skuwbk003xsnameTori + Tankdescriptionapplied_rule_idsadditional_datafree_shipping0is_qty_decimal0no_discount0qty_backorderedqty_canceled0.0000qty_invoiced0.0000qty_ordered2.0000qty_refunded0.0000qty_shipped0.0000base_costprice60.0000base_price60.0000original_price60.0000base_original_price60.0000tax_percent9.0000tax_amount10.8000base_tax_amount10.8000tax_invoiced0.0000base_tax_invoiced0.0000discount_percent0.0000discount_amount0.0000base_discount_amount0.0000discount_invoiced0.0000base_discount_invoiced0.0000amount_refunded0.0000base_amount_refunded0.0000row_total120.0000base_row_total120.0000row_invoiced0.0000base_row_invoiced0.0000row_weight2.0000base_tax_before_discounttax_before_discountext_order_item_idlocked_do_invoicelocked_do_shipprice_incl_tax65.4000base_price_incl_tax65.4000row_total_incl_tax130.8000base_row_total_incl_tax130.8000hidden_tax_amountbase_hidden_tax_amounthidden_tax_invoicedbase_hidden_tax_invoicedhidden_tax_refundedbase_hidden_tax_refundedis_nominal0tax_canceledhidden_tax_canceledtax_refundedbase_tax_refundeddiscount_refundedbase_discount_refundedgift_message_idgift_message_available1base_weee_tax_applied_amount0.0000base_weee_tax_applied_row_amnt0.0000base_weee_tax_applied_row_amount0.0000weee_tax_applied_amount0.0000weee_tax_applied_row_amount0.0000weee_tax_applieda:0:{}weee_tax_disposition0.0000weee_tax_row_disposition0.0000base_weee_tax_disposition0.0000base_weee_tax_row_disposition0.0000event_idgiftregistry_item_idgw_idgw_base_pricegw_pricegw_base_tax_amountgw_tax_amountgw_base_price_invoicedgw_price_invoicedgw_base_tax_amount_invoicedgw_tax_amount_invoicedgw_base_price_refundedgw_price_refundedgw_base_tax_amount_refundedgw_tax_amount_refundedqty_returned0.0000has_children1item_id544order_id181parent_item_id543quote_item_id2321store_id1created_at2013-05-25 + 21:37:06updated_at2013-05-25 + 21:37:06product_id512product_typesimpleproduct_optionsa:5:{s:15:"info_buyRequest";a:7:{s:4:"uenc";s:96:"aHR0cDovL2FraXppYW4udGVhbS5tYWdlbnRvLmNvbS9jYXRhbG9nL3Byb2R1Y3Qvdmlldy9pZC80MTgvY2F0ZWdvcnkvMTEv";s:7:"product";s:3:"418";s:8:"form_key";s:16:"sj7gV8wdnPmbJkIX";s:15:"related_product";s:0:"";s:15:"super_attribute";a:2:{i:92;s:2:"26";i:180;s:2:"81";}s:3:"qty";s:1:"2";s:10:"return_url";s:0:"";}s:17:"giftcard_lifetime";N;s:22:"giftcard_is_redeemable";i:0;s:23:"giftcard_email_template";N;s:13:"giftcard_type";N;}weight1.0000is_virtual0skuwbk003xsnameTori + Tankdescriptionapplied_rule_idsadditional_datafree_shipping0is_qty_decimal0no_discount0qty_backorderedqty_canceled0.0000qty_invoiced0.0000qty_ordered2.0000qty_refunded0.0000qty_shipped0.0000base_costprice0.0000base_price0.0000original_price0.0000base_original_pricetax_percent0.0000tax_amount0.0000base_tax_amount0.0000tax_invoiced0.0000base_tax_invoiced0.0000discount_percent0.0000discount_amount0.0000base_discount_amount0.0000discount_invoiced0.0000base_discount_invoiced0.0000amount_refunded0.0000base_amount_refunded0.0000row_total0.0000base_row_total0.0000row_invoiced0.0000base_row_invoiced0.0000row_weight0.0000base_tax_before_discounttax_before_discountext_order_item_idlocked_do_invoicelocked_do_shipprice_incl_taxbase_price_incl_taxrow_total_incl_taxbase_row_total_incl_taxhidden_tax_amountbase_hidden_tax_amounthidden_tax_invoicedbase_hidden_tax_invoicedhidden_tax_refundedbase_hidden_tax_refundedis_nominal0tax_canceledhidden_tax_canceledtax_refundedbase_tax_refundeddiscount_refundedbase_discount_refundedgift_message_idgift_message_available1base_weee_tax_applied_amount0.0000base_weee_tax_applied_row_amntbase_weee_tax_applied_row_amountweee_tax_applied_amount0.0000weee_tax_applied_row_amount0.0000weee_tax_applieda:0:{}weee_tax_disposition0.0000weee_tax_row_disposition0.0000base_weee_tax_disposition0.0000base_weee_tax_row_disposition0.0000event_idgiftregistry_item_idgw_idgw_base_pricegw_pricegw_base_tax_amountgw_tax_amountgw_base_price_invoicedgw_price_invoicedgw_base_tax_amount_invoicedgw_tax_amount_invoicedgw_base_price_refundedgw_price_refundedgw_base_tax_amount_refundedgw_tax_amount_refundedqty_returned0.0000item_id545order_id181parent_item_idquote_item_id2322store_id1created_at2013-05-25 + 21:37:06updated_at2013-05-25 + 21:37:06product_id423product_typeconfigurableproduct_optionsa:10:{s:15:"info_buyRequest";a:7:{s:4:"uenc";s:96:"aHR0cDovL2FraXppYW4udGVhbS5tYWdlbnRvLmNvbS9jYXRhbG9nL3Byb2R1Y3Qvdmlldy9pZC80MjMvY2F0ZWdvcnkvMTMv";s:7:"product";s:3:"423";s:8:"form_key";s:16:"sj7gV8wdnPmbJkIX";s:15:"related_product";s:0:"";s:15:"super_attribute";a:2:{i:92;s:2:"18";i:180;s:2:"80";}s:3:"qty";s:1:"1";s:10:"return_url";s:0:"";}s:15:"attributes_info";a:2:{i:0;a:2:{s:5:"label";s:5:"Color";s:5:"value";s:6:"Purple";}i:1;a:2:{s:5:"label";s:4:"Size";s:5:"value";s:1:"S";}}s:11:"simple_name";s:21:"Racer + Back Maxi Dress";s:10:"simple_sku";s:6:"wsd005";s:20:"product_calculations";i:1;s:13:"shipment_type";i:0;s:17:"giftcard_lifetime";N;s:22:"giftcard_is_redeemable";i:0;s:23:"giftcard_email_template";N;s:13:"giftcard_type";N;}weight1.0000is_virtual0skuwsd005nameRacer + Back Maxi Dressdescriptionapplied_rule_idsadditional_datafree_shipping0is_qty_decimal0no_discount0qty_backorderedqty_canceled0.0000qty_invoiced0.0000qty_ordered1.0000qty_refunded0.0000qty_shipped0.0000base_costprice224.0000base_price224.0000original_price224.0000base_original_price224.0000tax_percent9.0000tax_amount20.1600base_tax_amount20.1600tax_invoiced0.0000base_tax_invoiced0.0000discount_percent0.0000discount_amount0.0000base_discount_amount0.0000discount_invoiced0.0000base_discount_invoiced0.0000amount_refunded0.0000base_amount_refunded0.0000row_total224.0000base_row_total224.0000row_invoiced0.0000base_row_invoiced0.0000row_weight1.0000base_tax_before_discounttax_before_discountext_order_item_idlocked_do_invoicelocked_do_shipprice_incl_tax244.1600base_price_incl_tax244.1600row_total_incl_tax244.1600base_row_total_incl_tax244.1600hidden_tax_amountbase_hidden_tax_amounthidden_tax_invoicedbase_hidden_tax_invoicedhidden_tax_refundedbase_hidden_tax_refundedis_nominal0tax_canceledhidden_tax_canceledtax_refundedbase_tax_refundeddiscount_refundedbase_discount_refundedgift_message_idgift_message_available1base_weee_tax_applied_amount0.0000base_weee_tax_applied_row_amnt0.0000base_weee_tax_applied_row_amount0.0000weee_tax_applied_amount0.0000weee_tax_applied_row_amount0.0000weee_tax_applieda:0:{}weee_tax_disposition0.0000weee_tax_row_disposition0.0000base_weee_tax_disposition0.0000base_weee_tax_row_disposition0.0000event_idgiftregistry_item_idgw_idgw_base_pricegw_pricegw_base_tax_amountgw_tax_amountgw_base_price_invoicedgw_price_invoicedgw_base_tax_amount_invoicedgw_tax_amount_invoicedgw_base_price_refundedgw_price_refundedgw_base_tax_amount_refundedgw_tax_amount_refundedqty_returned0.0000has_children1item_id546order_id181parent_item_id545quote_item_id2323store_id1created_at2013-05-25 + 21:37:06updated_at2013-05-25 + 21:37:06product_id302product_typesimpleproduct_optionsa:5:{s:15:"info_buyRequest";a:7:{s:4:"uenc";s:96:"aHR0cDovL2FraXppYW4udGVhbS5tYWdlbnRvLmNvbS9jYXRhbG9nL3Byb2R1Y3Qvdmlldy9pZC80MjMvY2F0ZWdvcnkvMTMv";s:7:"product";s:3:"423";s:8:"form_key";s:16:"sj7gV8wdnPmbJkIX";s:15:"related_product";s:0:"";s:15:"super_attribute";a:2:{i:92;s:2:"18";i:180;s:2:"80";}s:3:"qty";s:1:"1";s:10:"return_url";s:0:"";}s:17:"giftcard_lifetime";N;s:22:"giftcard_is_redeemable";i:0;s:23:"giftcard_email_template";N;s:13:"giftcard_type";N;}weight1.0000is_virtual0skuwsd005nameRacer + Back Maxi Dressdescriptionapplied_rule_idsadditional_datafree_shipping0is_qty_decimal0no_discount0qty_backorderedqty_canceled0.0000qty_invoiced0.0000qty_ordered1.0000qty_refunded0.0000qty_shipped0.0000base_costprice0.0000base_price0.0000original_price0.0000base_original_pricetax_percent0.0000tax_amount0.0000base_tax_amount0.0000tax_invoiced0.0000base_tax_invoiced0.0000discount_percent0.0000discount_amount0.0000base_discount_amount0.0000discount_invoiced0.0000base_discount_invoiced0.0000amount_refunded0.0000base_amount_refunded0.0000row_total0.0000base_row_total0.0000row_invoiced0.0000base_row_invoiced0.0000row_weight0.0000base_tax_before_discounttax_before_discountext_order_item_idlocked_do_invoicelocked_do_shipprice_incl_taxbase_price_incl_taxrow_total_incl_taxbase_row_total_incl_taxhidden_tax_amountbase_hidden_tax_amounthidden_tax_invoicedbase_hidden_tax_invoicedhidden_tax_refundedbase_hidden_tax_refundedis_nominal0tax_canceledhidden_tax_canceledtax_refundedbase_tax_refundeddiscount_refundedbase_discount_refundedgift_message_idgift_message_available1base_weee_tax_applied_amount0.0000base_weee_tax_applied_row_amntbase_weee_tax_applied_row_amountweee_tax_applied_amount0.0000weee_tax_applied_row_amount0.0000weee_tax_applieda:0:{}weee_tax_disposition0.0000weee_tax_row_disposition0.0000base_weee_tax_disposition0.0000base_weee_tax_row_disposition0.0000event_idgiftregistry_item_idgw_idgw_base_pricegw_pricegw_base_tax_amountgw_tax_amountgw_base_price_invoicedgw_price_invoicedgw_base_tax_amount_invoicedgw_tax_amount_invoicedgw_base_price_refundedgw_price_refundedgw_base_tax_amount_refundedgw_tax_amount_refundedqty_returned0.0000paymenttransaction_id951parent_id181base_shipping_capturedshipping_capturedamount_refundedbase_amount_paidamount_canceledbase_amount_authorizedbase_amount_paid_onlinebase_amount_refunded_onlinebase_shipping_amount12.3100shipping_amount12.3100amount_paidamount_authorizedbase_amount_ordered387.2700base_shipping_refundedshipping_refundedbase_amount_refundedamount_ordered387.2700base_amount_canceledquote_payment_idadditional_datacc_exp_month0cc_ss_start_year0echeck_bank_namemethodcheckmocc_debug_request_bodycc_secure_verifyprotection_eligibilitycc_approvalcc_last4cc_status_descriptionecheck_typecc_debug_response_serializedcc_ss_start_month0echeck_account_typelast_trans_idcc_cid_statuscc_ownercc_typepo_numbercc_exp_year0cc_statusecheck_routing_numberaccount_statusanet_trans_methodcc_debug_response_bodycc_ss_issueecheck_account_namecc_avs_statuscc_number_enccc_trans_idpaybox_request_numberaddress_statusadditional_informationcybersource_tokenflo2cash_account_idideal_issuer_idideal_issuer_titleideal_transaction_checkedpaybox_question_numberpayment_id181status_historyparent_id181is_customer_notified1is_visible_on_front0commentstatuspendingcreated_at2013-05-25 + 21:37:06entity_nameorderstore_id1'} + headers: + cache-control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0'] + connection: [keep-alive] + content-type: [text/xml; charset=UTF-8] + date: ['Fri, 30 Jun 2017 12:41:05 GMT'] + expires: ['Thu, 19 Nov 1981 08:52:00 GMT'] + pragma: [no-cache] + server: [nginx/1.10.2] + set-cookie: ['PHPSESSID=pfkosqhm3bhjh4dvo8km9tti30; expires=Fri, 30-Jun-2017 + 13:41:05 GMT; path=/; domain=magento; HttpOnly'] + x-powered-by: [PHP/5.3.3] + status: {code: 200, message: OK} +- request: + body: !!python/unicode ' + + + + call + + + + + + 7bd8047fd69712b39406280c699cf678 + + + + + + customer.info + + + + + + + + 136 + + + + + + + + + + ' + headers: + Accept-Encoding: [gzip] + Content-Length: ['335'] + Content-Type: [text/xml] + User-Agent: [xmlrpclib.py/1.0.1 (by www.pythonware.com)] + method: POST + uri: http://magento/index.php/api/xmlrpc + response: + body: {string: !!python/unicode ' + + customer_id136created_at2013-05-16T06:20:45+02:00updated_at2014-05-03 + 21:36:47increment_idstore_id0website_id1confirmationcreated_inAdmindefault_billing92default_shipping92disable_auto_group_change0dobemailjanedoe@example.comfirstnameJanegendergroup_id1lastnameDoemiddlenamepassword_hash80f8bdf79491b99b8180a4e746046ea5:8huK4jwUrBIwUTnw3LuWKT9MzAQghb5zprefixreward_update_notification1reward_warning_notification1rp_tokenrp_token_created_atsuffixtaxvat'} + headers: + cache-control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0'] + connection: [keep-alive] + content-type: [text/xml; charset=UTF-8] + date: ['Fri, 30 Jun 2017 12:41:05 GMT'] + expires: ['Thu, 19 Nov 1981 08:52:00 GMT'] + pragma: [no-cache] + server: [nginx/1.10.2] + set-cookie: ['PHPSESSID=fs03npe5gss1h7jbcf0fkce344; expires=Fri, 30-Jun-2017 + 13:41:05 GMT; path=/; domain=magento; HttpOnly'] + x-powered-by: [PHP/5.3.3] + status: {code: 200, message: OK} +- request: + body: !!python/unicode ' + + + + call + + + + + + 7bd8047fd69712b39406280c699cf678 + + + + + + ol_customer_groups.info + + + + + + + + 1 + + + + + + + + + + ' + headers: + Accept-Encoding: [gzip] + Content-Length: ['343'] + Content-Type: [text/xml] + User-Agent: [xmlrpclib.py/1.0.1 (by www.pythonware.com)] + method: POST + uri: http://magento/index.php/api/xmlrpc + response: + body: {string: !!python/unicode ' + + customer_group_id1customer_group_codeGeneraltax_class_id3'} + headers: + cache-control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0'] + connection: [keep-alive] + content-type: [text/xml; charset=UTF-8] + date: ['Fri, 30 Jun 2017 12:41:05 GMT'] + expires: ['Thu, 19 Nov 1981 08:52:00 GMT'] + pragma: [no-cache] + server: [nginx/1.10.2] + set-cookie: ['PHPSESSID=81pbd4lbrcbvvbt8h52qc5g5d3; expires=Fri, 30-Jun-2017 + 13:41:05 GMT; path=/; domain=magento; HttpOnly'] + x-powered-by: [PHP/5.3.3] + status: {code: 200, message: OK} +- request: + body: !!python/unicode ' + + + + call + + + + + + 7bd8047fd69712b39406280c699cf678 + + + + + + customer_address.list + + + + + + + + + + + + customer_id + + + + + + eq + + 136 + + + + + + + + + + + + + + + + + + ' + headers: + Accept-Encoding: [gzip] + Content-Length: ['496'] + Content-Type: [text/xml] + User-Agent: [xmlrpclib.py/1.0.1 (by www.pythonware.com)] + method: POST + uri: http://magento/index.php/api/xmlrpc + response: + body: {string: !!python/unicode ' + + customer_address_id92created_at2013-05-17 + 01:20:45updated_at2014-05-03 + 21:36:47cityCulver + Citycountry_idUSfirstnameJanelastnameDoepostcode90232regionCaliforniaregion_id12street10441 + Jefferson Blvd, Suite 200telephone888-888-8888is_default_billing1is_default_shipping1'} + headers: + cache-control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0'] + connection: [keep-alive] + content-type: [text/xml; charset=UTF-8] + date: ['Fri, 30 Jun 2017 12:41:05 GMT'] + expires: ['Thu, 19 Nov 1981 08:52:00 GMT'] + pragma: [no-cache] + server: [nginx/1.10.2] + set-cookie: ['PHPSESSID=g8635t1jlq7mn7j46rmr78ehk7; expires=Fri, 30-Jun-2017 + 13:41:05 GMT; path=/; domain=magento; HttpOnly'] + x-powered-by: [PHP/5.3.3] + status: {code: 200, message: OK} +- request: + body: !!python/unicode ' + + + + call + + + + + + 7bd8047fd69712b39406280c699cf678 + + + + + + customer_address.info + + + + + + + + 92 + + + + + + + + + + ' + headers: + Accept-Encoding: [gzip] + Content-Length: ['342'] + Content-Type: [text/xml] + User-Agent: [xmlrpclib.py/1.0.1 (by www.pythonware.com)] + method: POST + uri: http://magento/index.php/api/xmlrpc + response: + body: {string: !!python/unicode ' + + customer_address_id92created_at2013-05-17T03:20:45+02:00updated_at2014-05-03 + 21:36:47increment_idcityCulver + Citycompanycountry_idUSfaxfirstnameJanelastnameDoemiddlenamepostcode90232prefixregionCaliforniaregion_id12street10441 + Jefferson Blvd, Suite 200suffixtelephone888-888-8888vat_idvat_is_validvat_request_datevat_request_idvat_request_successis_default_billing1is_default_shipping1'} + headers: + cache-control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0'] + connection: [keep-alive] + content-type: [text/xml; charset=UTF-8] + date: ['Fri, 30 Jun 2017 12:41:05 GMT'] + expires: ['Thu, 19 Nov 1981 08:52:00 GMT'] + pragma: [no-cache] + server: [nginx/1.10.2] + set-cookie: ['PHPSESSID=jbu63g98dnm2222ef3ssm04fr0; expires=Fri, 30-Jun-2017 + 13:41:05 GMT; path=/; domain=magento; HttpOnly'] + x-powered-by: [PHP/5.3.3] + status: {code: 200, message: OK} +- request: + body: !!python/unicode ' + + + + call + + + + + + 7bd8047fd69712b39406280c699cf678 + + + + + + ol_catalog_product.info + + + + + + + + 512 + + id + + + + + + + + + + ' + headers: + Accept-Encoding: [gzip] + Content-Length: ['422'] + Content-Type: [text/xml] + User-Agent: [xmlrpclib.py/1.0.1 (by www.pythonware.com)] + method: POST + uri: http://magento/index.php/api/xmlrpc + response: + body: {string: !!python/unicode ' + + product_id512skuwbk003xsset13typesimplecategorieswebsites1type_idsimplenameTori + TankdescriptionRibbed + scoop neck tank. 100% cotton.Machine wash.short_descriptionA + simple ribbed cotton tank. Great for layering.weight1.0000news_from_date2013-03-01 + 00:00:00old_idnews_to_datestatus1url_keytori-tankvisibility1country_of_manufactureurl_pathtori-tank-577.htmlcategory_idsrequired_options0has_options0image_labelsmall_image_labelthumbnail_labelcreated_at2013-03-12T03:32:00+01:00updated_at2014-03-08 + 08:06:21price60.0000group_pricespecial_priceminimal_pricespecial_from_datespecial_to_datetier_pricemsrp_enabled2msrp_display_actual_price_type4msrptax_class_id2meta_titlemeta_keywordmeta_descriptionis_recurring0recurring_profilecustom_designcustom_design_fromcustom_design_tocustom_layout_updatepage_layoutone_columnoptions_containercontainer1gift_message_availablegift_wrapping_availablegift_wrapping_pricecolor26occasion31apparel_type35sleeve_length45fitsize81lengthgender94'} + headers: + cache-control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0'] + connection: [keep-alive] + content-type: [text/xml; charset=UTF-8] + date: ['Fri, 30 Jun 2017 12:41:06 GMT'] + expires: ['Thu, 19 Nov 1981 08:52:00 GMT'] + pragma: [no-cache] + server: [nginx/1.10.2] + set-cookie: ['PHPSESSID=hchb1pmf0739fl7rkt5fdkpdd6; expires=Fri, 30-Jun-2017 + 13:41:06 GMT; path=/; domain=magento; HttpOnly'] + x-powered-by: [PHP/5.3.3] + status: {code: 200, message: OK} +- request: + body: !!python/unicode ' + + + + call + + + + + + 7bd8047fd69712b39406280c699cf678 + + + + + + product_media.list + + + + + + + + 512 + + id + + + + + + + + + + ' + headers: + Accept-Encoding: [gzip] + Content-Length: ['396'] + Content-Type: [text/xml] + User-Agent: [xmlrpclib.py/1.0.1 (by www.pythonware.com)] + method: POST + uri: http://magento/index.php/api/xmlrpc + response: + body: {string: !!python/unicode ' + + file/w/b/wbk003t_4.jpglabelposition1exclude0urlhttp://magento/media/catalog/product/w/b/wbk003t_4.jpgtypesimagesmall_imagethumbnail'} + headers: + cache-control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0'] + connection: [keep-alive] + content-type: [text/xml; charset=UTF-8] + date: ['Fri, 30 Jun 2017 12:41:06 GMT'] + expires: ['Thu, 19 Nov 1981 08:52:00 GMT'] + pragma: [no-cache] + server: [nginx/1.10.2] + set-cookie: ['PHPSESSID=ng8pj5rng9epo1881nd4ul8ja1; expires=Fri, 30-Jun-2017 + 13:41:06 GMT; path=/; domain=magento; HttpOnly'] + x-powered-by: [PHP/5.3.3] + status: {code: 200, message: OK} +- request: + body: !!python/unicode ' + + + + call + + + + + + 7bd8047fd69712b39406280c699cf678 + + + + + + ol_catalog_product.info + + + + + + + + 302 + + id + + + + + + + + + + ' + headers: + Accept-Encoding: [gzip] + Content-Length: ['422'] + Content-Type: [text/xml] + User-Agent: [xmlrpclib.py/1.0.1 (by www.pythonware.com)] + method: POST + uri: http://magento/index.php/api/xmlrpc + response: + body: {string: !!python/unicode ' + + product_id302skuwsd005set13typesimplecategories13websites1type_idsimplenameRacer + Back Maxi DressdescriptionRacer + back maxi dress. Pull over style. Loose fitting. Straight skirt falls to floor. + Viscose. short_descriptionThis + classic maxi dress drapes beautifully throughout body and sweeps in a light + A-line to the floor. Keep a casual chic look by pairing with a jean jacket + or go glam with a statement necklace.weight1.0000news_from_date2013-03-01 + 00:00:00old_idnews_to_datestatus1url_keyracer-back-maxi-dressvisibility1country_of_manufactureurl_pathracer-back-maxi-dress.htmlcategory_ids13required_options0has_options0image_labelsmall_image_labelthumbnail_labelcreated_at2013-03-05T06:48:15+01:00updated_at2013-05-10 + 21:22:33price280.0000group_pricespecial_priceminimal_pricespecial_from_datespecial_to_datetier_pricemsrp_enabled2msrp_display_actual_price_type4msrptax_class_id2meta_titlemeta_keywordmeta_descriptionis_recurring0recurring_profilecustom_designcustom_design_fromcustom_design_tocustom_layout_updatepage_layoutone_columnoptions_containercontainer1gift_message_availablegift_wrapping_availablegift_wrapping_pricecolor18occasion31apparel_type33sleeve_length45fitsize80length84gender94'} + headers: + cache-control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0'] + connection: [keep-alive] + content-type: [text/xml; charset=UTF-8] + date: ['Fri, 30 Jun 2017 12:41:06 GMT'] + expires: ['Thu, 19 Nov 1981 08:52:00 GMT'] + pragma: [no-cache] + server: [nginx/1.10.2] + set-cookie: ['PHPSESSID=ndbatqgkviasnujcc7hm7aa2o5; expires=Fri, 30-Jun-2017 + 13:41:06 GMT; path=/; domain=magento; HttpOnly'] + x-powered-by: [PHP/5.3.3] + status: {code: 200, message: OK} +- request: + body: !!python/unicode ' + + + + call + + + + + + 7bd8047fd69712b39406280c699cf678 + + + + + + catalog_category.info + + + + + + + + 13 + + + + + + + + + + ' + headers: + Accept-Encoding: [gzip] + Content-Length: ['342'] + Content-Type: [text/xml] + User-Agent: [xmlrpclib.py/1.0.1 (by www.pythonware.com)] + method: POST + uri: http://magento/index.php/api/xmlrpc + response: + body: {string: !!python/unicode ' + + category_id13is_active1position4level3parent_id4increment_idcreated_at2013-01-25T11:59:21+01:00updated_at2013-03-05 + 04:45:24nameDresses + & Skirtsurl_keydresses-skirtsthumbnaildescriptionimagemeta_titlemeta_keywordsmeta_descriptioninclude_in_menu1path1/2/4/13all_children13path_in_storechildrenurl_pathwomen/dresses-skirts.htmlchildren_count0display_modePRODUCTSlanding_pageis_anchor1available_sort_bydefault_sort_byfilter_price_rangecustom_use_parent_settings0custom_apply_to_products0custom_designcustom_design_fromcustom_design_topage_layoutthree_columnscustom_layout_update'} + headers: + cache-control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0'] + connection: [keep-alive] + content-type: [text/xml; charset=UTF-8] + date: ['Fri, 30 Jun 2017 12:41:06 GMT'] + expires: ['Thu, 19 Nov 1981 08:52:00 GMT'] + pragma: [no-cache] + server: [nginx/1.10.2] + set-cookie: ['PHPSESSID=coqjs3ilconc0t0om520iblqj0; expires=Fri, 30-Jun-2017 + 13:41:06 GMT; path=/; domain=magento; HttpOnly'] + x-powered-by: [PHP/5.3.3] + status: {code: 200, message: OK} +- request: + body: !!python/unicode ' + + + + call + + + + + + 7bd8047fd69712b39406280c699cf678 + + + + + + catalog_category.info + + + + + + + + 4 + + + + + + + + + + ' + headers: + Accept-Encoding: [gzip] + Content-Length: ['341'] + Content-Type: [text/xml] + User-Agent: [xmlrpclib.py/1.0.1 (by www.pythonware.com)] + method: POST + uri: http://magento/index.php/api/xmlrpc + response: + body: {string: !!python/unicode ' + + category_id4is_active1position2level2parent_id2increment_idcreated_at2013-01-25T11:43:31+01:00updated_at2013-05-15 + 22:50:23nameWomenurl_keywomenthumbnaildescriptionimagemeta_titlemeta_keywordsmeta_descriptioninclude_in_menu1path1/2/4all_children4,10,11,12,13path_in_storechildren10,11,12,13url_pathwomen.htmlchildren_count4display_modePAGElanding_page27is_anchor1available_sort_bydefault_sort_byfilter_price_rangecustom_use_parent_settings0custom_apply_to_products0custom_designcustom_design_fromcustom_design_topage_layoutone_columncustom_layout_update<reference> + + <remove name="right.poll"/> + + </reference>'} + headers: + cache-control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0'] + connection: [keep-alive] + content-type: [text/xml; charset=UTF-8] + date: ['Fri, 30 Jun 2017 12:41:07 GMT'] + expires: ['Thu, 19 Nov 1981 08:52:00 GMT'] + pragma: [no-cache] + server: [nginx/1.10.2] + set-cookie: ['PHPSESSID=45q152e9lu33brdqkopo1pg9g4; expires=Fri, 30-Jun-2017 + 13:41:06 GMT; path=/; domain=magento; HttpOnly'] + x-powered-by: [PHP/5.3.3] + status: {code: 200, message: OK} +- request: + body: !!python/unicode ' + + + + call + + + + + + 7bd8047fd69712b39406280c699cf678 + + + + + + catalog_category.info + + + + + + + + 2 + + + + + + + + + + ' + headers: + Accept-Encoding: [gzip] + Content-Length: ['341'] + Content-Type: [text/xml] + User-Agent: [xmlrpclib.py/1.0.1 (by www.pythonware.com)] + method: POST + uri: http://magento/index.php/api/xmlrpc + response: + body: {string: !!python/unicode ' + + category_id2is_active1position1level1parent_id1increment_idcreated_at2013-01-14T11:12:53+01:00updated_at2013-05-15 + 22:43:57nameDefault + Categoryurl_keythumbnaildescriptionimagemeta_titlemeta_keywordsmeta_descriptioninclude_in_menu1path1/2all_children2,4,10,11,12,13,5,14,15,16,17,40,6,18,19,20,21,7,22,23,24,25,8,26,27,28,29,9path_in_storechildren4,5,6,7,8,9url_pathchildren_count27display_modePRODUCTS_AND_PAGElanding_page19is_anchor0available_sort_bydefault_sort_byfilter_price_rangecustom_use_parent_settingscustom_apply_to_products0custom_designcustom_design_fromcustom_design_topage_layoutcustom_layout_update'} + headers: + cache-control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0'] + connection: [keep-alive] + content-type: [text/xml; charset=UTF-8] + date: ['Fri, 30 Jun 2017 12:41:07 GMT'] + expires: ['Thu, 19 Nov 1981 08:52:00 GMT'] + pragma: [no-cache] + server: [nginx/1.10.2] + set-cookie: ['PHPSESSID=tqi1gcnv15c54927lntuensrf3; expires=Fri, 30-Jun-2017 + 13:41:07 GMT; path=/; domain=magento; HttpOnly'] + x-powered-by: [PHP/5.3.3] + status: {code: 200, message: OK} +- request: + body: !!python/unicode ' + + + + call + + + + + + 7bd8047fd69712b39406280c699cf678 + + + + + + catalog_category.info + + + + + + + + 1 + + + + + + + + + + ' + headers: + Accept-Encoding: [gzip] + Content-Length: ['341'] + Content-Type: [text/xml] + User-Agent: [xmlrpclib.py/1.0.1 (by www.pythonware.com)] + method: POST + uri: http://magento/index.php/api/xmlrpc + response: + body: {string: !!python/unicode ' + + category_id1is_activeposition0level0parent_id0increment_idupdated_at2013-01-14 + 10:12:53created_at2013-01-14T11:12:53+01:00nameRoot + Catalogurl_keythumbnaildescriptionimagemeta_titlemeta_keywordsmeta_descriptioninclude_in_menu1path1all_children1,2,4,10,11,12,13,5,14,15,16,17,40,6,18,19,20,21,7,22,23,24,25,8,26,27,28,29,9path_in_storechildren2url_pathchildren_count28display_modelanding_pageis_anchoravailable_sort_bydefault_sort_byfilter_price_rangecustom_use_parent_settingscustom_apply_to_productscustom_designcustom_design_fromcustom_design_topage_layoutcustom_layout_update'} + headers: + cache-control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0'] + connection: [keep-alive] + content-type: [text/xml; charset=UTF-8] + date: ['Fri, 30 Jun 2017 12:41:07 GMT'] + expires: ['Thu, 19 Nov 1981 08:52:00 GMT'] + pragma: [no-cache] + server: [nginx/1.10.2] + set-cookie: ['PHPSESSID=rj42t8ghtq8sicokf3706p2i41; expires=Fri, 30-Jun-2017 + 13:41:07 GMT; path=/; domain=magento; HttpOnly'] + x-powered-by: [PHP/5.3.3] + status: {code: 200, message: OK} +- request: + body: !!python/unicode ' + + + + call + + + + + + 7bd8047fd69712b39406280c699cf678 + + + + + + product_media.list + + + + + + + + 302 + + id + + + + + + + + + + ' + headers: + Accept-Encoding: [gzip] + Content-Length: ['396'] + Content-Type: [text/xml] + User-Agent: [xmlrpclib.py/1.0.1 (by www.pythonware.com)] + method: POST + uri: http://magento/index.php/api/xmlrpc + response: + body: {string: !!python/unicode ' + + file/w/s/wsd005t_1.jpglabelposition1exclude0urlhttp://magento/media/catalog/product/w/s/wsd005t_1.jpgtypesimagesmall_imagethumbnailfile/w/s/wsd005b_1.jpglabelposition3exclude0urlhttp://magento/media/catalog/product/w/s/wsd005b_1.jpgtypes'} + headers: + cache-control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0'] + connection: [keep-alive] + content-type: [text/xml; charset=UTF-8] + date: ['Fri, 30 Jun 2017 12:41:08 GMT'] + expires: ['Thu, 19 Nov 1981 08:52:00 GMT'] + pragma: [no-cache] + server: [nginx/1.10.2] + set-cookie: ['PHPSESSID=btv3qnpblbj22vivmqg4nr17p5; expires=Fri, 30-Jun-2017 + 13:41:08 GMT; path=/; domain=magento; HttpOnly'] + x-powered-by: [PHP/5.3.3] + status: {code: 200, message: OK} +- request: + body: !!python/unicode ' + + + + endSession + + + + + + 7bd8047fd69712b39406280c699cf678 + + + + + + + + ' + headers: + Accept-Encoding: [gzip] + Content-Length: ['186'] + Content-Type: [text/xml] + User-Agent: [xmlrpclib.py/1.0.1 (by www.pythonware.com)] + method: POST + uri: http://magento/index.php/api/xmlrpc + response: + body: {string: !!python/unicode ' + + 1'} + headers: + cache-control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0'] + connection: [keep-alive] + content-type: [text/xml; charset=UTF-8] + date: ['Fri, 30 Jun 2017 12:41:08 GMT'] + expires: ['Thu, 19 Nov 1981 08:52:00 GMT'] + pragma: [no-cache] + server: [nginx/1.10.2] + set-cookie: ['PHPSESSID=mtietvimfuor2lunsd8bn1pdo6; expires=Fri, 30-Jun-2017 + 13:41:08 GMT; path=/; domain=magento; HttpOnly'] + x-powered-by: [PHP/5.3.3] + status: {code: 200, message: OK} +version: 1 diff --git a/connector_magento_payment_ref/tests/test_sale_order.py b/connector_magento_payment_ref/tests/test_sale_order.py new file mode 100644 index 000000000..a97cfd19b --- /dev/null +++ b/connector_magento_payment_ref/tests/test_sale_order.py @@ -0,0 +1,41 @@ +# -*- coding: utf-8 -*- +# Copyright (c) 2015 ACSONE SA/NV () +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). +from os.path import dirname, join +from odoo.addons.connector_magento.tests.common import MagentoSyncTestCase, \ + recorder + +CASSETTE_LIBRARY_DIR = join(dirname(__file__), 'fixtures/cassettes') + + +class TestSaleOrder(MagentoSyncTestCase): + """ Test the imports from a Magento Mock. + """ + + def setUp(self): + super(TestSaleOrder, self).setUp() + self.payment_method = self.env['account.payment.mode'].search( + [('name', '=', 'checkmo')], + limit=1, + ) + + def _import_sale_order(self, increment_id, cassette=True): + return self._import_record('magento.sale.order', + increment_id, cassette=cassette) + + def test_transaction_id_mapping(self): + """ Test import of sale order with a payment transaction id""" + self.payment_method.transaction_id_path = 'payment.transaction_id' + with recorder.use_cassette('import_sale_order_transaction_id', + cassette_library_dir=CASSETTE_LIBRARY_DIR): + binding = self._import_sale_order(100000201, cassette=False) + self.assertEqual(binding.transaction_id, '951') + + def test_transaction_id_mapping_wrong_path(self): + """ Test import of sale order with a wrong path to the + transaction_id""" + self.payment_method.transaction_id_path = 'payment.trans' + with recorder.use_cassette('import_sale_order_transaction_id', + cassette_library_dir=CASSETTE_LIBRARY_DIR): + binding = self._import_sale_order(100000201, cassette=False) + self.assertEqual(binding.transaction_id, False) diff --git a/connector_magento_payment_ref/views/account_payment_mode.xml b/connector_magento_payment_ref/views/account_payment_mode.xml new file mode 100644 index 000000000..af5eb4af6 --- /dev/null +++ b/connector_magento_payment_ref/views/account_payment_mode.xml @@ -0,0 +1,13 @@ + + + + account_payment_mode.form.view (connector_magento_payment_ref) + account.payment.mode + + + + + + + + diff --git a/magentoerpconnect_transaction_id/README.rst b/magentoerpconnect_transaction_id/README.rst deleted file mode 100644 index b7ea40247..000000000 --- a/magentoerpconnect_transaction_id/README.rst +++ /dev/null @@ -1,57 +0,0 @@ -.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg - :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html - :alt: License: AGPL-3 - -================================ -magentoerpconnect_transaction_id -================================ - -This module let's you define on the payment method the path to a value to use as transaction id into -the informations of a sale order returned as json by magento and map this information into -the transaction_id field defined by OCA/bank-statement-reconcile/base_transaction_id. - -The main purpose is to ease the reconciliation process. - -Configuration -============= - -For each payment method, you can define the path to the transaction_id value in -the informations provided by magento. - - -Usage -===== - -.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas - :alt: Try me on Runbot - :target: https://runbot.odoo-community.org/runbot/107/8.0 - - -Bug Tracker -=========== - -Bugs are tracked on `GitHub Issues `_. -In case of trouble, please check there if your issue has already been reported. -If you spotted it first, help us smashing it by providing a detailed and welcomed feedback -`here `_. - -Credits -======= - -Contributors ------------- - -* Laurent Mignon - -Maintainer ----------- - -.. image:: http://odoo-community.org/logo.png - :alt: Odoo Community Association - :target: http://odoo-community.org - -This module is maintained by the OCA. - -OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use. - -To contribute to this module, please visit http://odoo-community.org. diff --git a/magentoerpconnect_transaction_id/models/__init__.py b/magentoerpconnect_transaction_id/models/__init__.py deleted file mode 100644 index 6fc4c0cc7..000000000 --- a/magentoerpconnect_transaction_id/models/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -# -*- coding: utf-8 -*- -from . import payment_method -from . import sale diff --git a/magentoerpconnect_transaction_id/models/sale.py b/magentoerpconnect_transaction_id/models/sale.py deleted file mode 100644 index 93449580c..000000000 --- a/magentoerpconnect_transaction_id/models/sale.py +++ /dev/null @@ -1,26 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright (c) 2015 ACSONE SA/NV () -# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). -from openerp.addons.magentoerpconnect import sale -from openerp.addons.connector.unit.mapper import mapping -from openerp.addons.magentoerpconnect.backend import magento - - -@magento(replacing=sale.SaleOrderPaymentImportMapper) -class SaleOrderImportMapper(sale.SaleOrderPaymentImportMapper): - - @mapping - def payment(self, record): - vals = super(SaleOrderImportMapper, self).payment(record) - payment_method_id = vals.get('payment_method_id') - if not payment_method_id: - return vals - payment_method = self.env['payment.method'].browse(payment_method_id) - if payment_method.transaction_id_path: - value = record - for key in payment_method.transaction_id_path.split('.'): - value = value.get(key) - if not value: - break - vals['transaction_id'] = value - return vals diff --git a/magentoerpconnect_transaction_id/tests/__init__.py b/magentoerpconnect_transaction_id/tests/__init__.py deleted file mode 100644 index 57b219870..000000000 --- a/magentoerpconnect_transaction_id/tests/__init__.py +++ /dev/null @@ -1,2 +0,0 @@ -# -*- coding: utf-8 -*- -from . import test_synchronization diff --git a/magentoerpconnect_transaction_id/tests/test_synchronization.py b/magentoerpconnect_transaction_id/tests/test_synchronization.py deleted file mode 100644 index 719f05253..000000000 --- a/magentoerpconnect_transaction_id/tests/test_synchronization.py +++ /dev/null @@ -1,67 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright (c) 2015 ACSONE SA/NV () -# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). - -from openerp.addons.magentoerpconnect.tests.test_synchronization import ( - SetUpMagentoSynchronized) -from openerp.addons.magentoerpconnect.tests.data_base import ( - magento_base_responses) -from openerp.addons.magentoerpconnect.unit.import_synchronizer import ( - import_record) -from openerp.addons.magentoerpconnect.tests.common import ( - mock_api, - mock_urlopen_image) - -SALE_ORDER_DATA_MOCK_KEY = ('sales_order.info', (900000695, )) - - -class TestMagentoSaleImport(SetUpMagentoSynchronized): - """ Test the imports from a Magento Mock. - """ - - def setUp(self): - super(TestMagentoSaleImport, self).setUp() - self.payment_method = self.env['payment.method'].search( - [('name', '=', 'checkmo')]) - self.payment_method.payment_term_id = False - - def test_transaction_id_mapping(self): - """ Test import of sale order with a payment transaction id""" - backend_id = self.backend_id - self.payment_method.transaction_id_path = 'payment.trans_id' - data = magento_base_responses[SALE_ORDER_DATA_MOCK_KEY] - data['payment']['trans_id'] = '123456' - with mock_api(magento_base_responses): - with mock_urlopen_image(): - import_record(self.session, - 'magento.sale.order', - backend_id, 900000695) - - order_model = self.env['magento.sale.order'] - mag_order_id = order_model.search([ - ('backend_id', '=', backend_id), - ('magento_id', '=', '900000695'), - ]) - self.assertEqual(len(mag_order_id), 1) - self.assertEqual(mag_order_id.transaction_id, '123456') - - def test_transaction_id_mapping_1(self): - """ Test import of sale order with wrong path to the payment - transaction id""" - backend_id = self.backend_id - self.payment_method.transaction_id_path = 'payment.tra' - data = magento_base_responses[SALE_ORDER_DATA_MOCK_KEY] - data['payment']['trans_id'] = '123456' - with mock_api(magento_base_responses): - with mock_urlopen_image(): - import_record(self.session, - 'magento.sale.order', - backend_id, 900000695) - - order_model = self.env['magento.sale.order'] - mag_order_id = order_model.search([ - ('backend_id', '=', backend_id), - ('magento_id', '=', '900000695'), - ]) - self.assertEqual(len(mag_order_id), 1) - self.assertFalse(mag_order_id.transaction_id) diff --git a/magentoerpconnect_transaction_id/views/payment_method_view.xml b/magentoerpconnect_transaction_id/views/payment_method_view.xml deleted file mode 100644 index bc8873052..000000000 --- a/magentoerpconnect_transaction_id/views/payment_method_view.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - sale_payment_method.payment_method.view_form (magentoerpconnect_transaction_id) - payment.method - - - - - - - - - diff --git a/setup/connector_magento_payment_ref/odoo/__init__.py b/setup/connector_magento_payment_ref/odoo/__init__.py new file mode 100644 index 000000000..de40ea7ca --- /dev/null +++ b/setup/connector_magento_payment_ref/odoo/__init__.py @@ -0,0 +1 @@ +__import__('pkg_resources').declare_namespace(__name__) diff --git a/setup/connector_magento_payment_ref/odoo/addons/__init__.py b/setup/connector_magento_payment_ref/odoo/addons/__init__.py new file mode 100644 index 000000000..de40ea7ca --- /dev/null +++ b/setup/connector_magento_payment_ref/odoo/addons/__init__.py @@ -0,0 +1 @@ +__import__('pkg_resources').declare_namespace(__name__) diff --git a/setup/connector_magento_payment_ref/odoo/addons/connector_magento_payment_ref b/setup/connector_magento_payment_ref/odoo/addons/connector_magento_payment_ref new file mode 120000 index 000000000..19515fd01 --- /dev/null +++ b/setup/connector_magento_payment_ref/odoo/addons/connector_magento_payment_ref @@ -0,0 +1 @@ +../../../../connector_magento_payment_ref \ No newline at end of file diff --git a/setup/connector_magento_payment_ref/setup.py b/setup/connector_magento_payment_ref/setup.py new file mode 100644 index 000000000..28c57bb64 --- /dev/null +++ b/setup/connector_magento_payment_ref/setup.py @@ -0,0 +1,6 @@ +import setuptools + +setuptools.setup( + setup_requires=['setuptools-odoo'], + odoo_addon=True, +)