本文整理汇总了Python中trytond.pool.Pool.find_or_create_using_amazon_data方法的典型用法代码示例。如果您正苦于以下问题:Python Pool.find_or_create_using_amazon_data方法的具体用法?Python Pool.find_or_create_using_amazon_data怎么用?Python Pool.find_or_create_using_amazon_data使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类trytond.pool.Pool
的用法示例。
在下文中一共展示了Pool.find_or_create_using_amazon_data方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: create_using_amazon_data
# 需要导入模块: from trytond.pool import Pool [as 别名]
# 或者: from trytond.pool.Pool import find_or_create_using_amazon_data [as 别名]
def create_using_amazon_data(cls, order_data, line_data):
"""
Create a sale using amazon data
:param order_data: Order data from amazon
:return: Active record of record created
"""
Party = Pool().get('party.party')
Address = Pool().get('party.address')
SaleChannel = Pool().get('sale.channel')
ChannelException = Pool().get('channel.exception')
amazon_channel = SaleChannel(
Transaction().context['current_channel']
)
assert amazon_channel.source == 'amazon_mws'
party_values = {
'name': order_data['BuyerName']['value'],
'email': order_data['BuyerEmail']['value'],
}
party = Party.find_or_create_using_amazon_data(party_values)
if 'Phone' in order_data['ShippingAddress']:
party.add_phone_using_amazon_data(
order_data['ShippingAddress']['Phone']['value']
)
party_invoice_address = party_shipping_address = \
Address.find_or_create_for_party_using_amazon_data(
party, order_data['ShippingAddress']
)
sale = cls.get_sale_using_amazon_data(order_data, line_data)
sale.party = party.id
sale.invoice_address = party_invoice_address.id
sale.shipment_address = party_shipping_address.id
sale.channel = amazon_channel.id
sale.save()
# TODO: Handle Discounts
# TODO: Handle Taxes
if sale.total_amount != Decimal(
order_data['OrderTotal']['Amount']['value']
):
ChannelException.create([{
'origin': '%s,%s' % (sale.__name__, sale.id),
'log': 'Order total does not match.',
'channel': sale.channel.id,
}])
return sale
# We import only completed orders, so we can confirm them all
cls.quote([sale])
cls.confirm([sale])
# TODO: Process the order for invoice as the payment info is received
return sale
示例2: create_using_amazon_data
# 需要导入模块: from trytond.pool import Pool [as 别名]
# 或者: from trytond.pool.Pool import find_or_create_using_amazon_data [as 别名]
def create_using_amazon_data(cls, order_data, line_data):
"""
Create a sale using amazon data
:param order_data: Order data from amazon
:return: Active record of record created
"""
Party = Pool().get('party.party')
Address = Pool().get('party.address')
SaleChannel = Pool().get('sale.channel')
amazon_channel = SaleChannel(
Transaction().context['current_channel']
)
assert amazon_channel.source == 'amazon_mws'
party_values = {
'name': order_data['BuyerEmail']['value'],
'email': order_data['BuyerName']['value'],
}
party = Party.find_or_create_using_amazon_data(party_values)
party.add_phone_using_amazon_data(
order_data['ShippingAddress']['Phone']['value']
)
party_invoice_address = party_shipping_address = \
Address.find_or_create_for_party_using_amazon_data(
party, order_data['ShippingAddress']
)
sale = cls.get_sale_using_amazon_data(order_data, line_data)
sale.party = party.id
sale.invoice_address = party_invoice_address.id
sale.shipment_address = party_shipping_address.id
sale.channel = amazon_channel.id
sale.save()
# TODO: Handle Discounts
# TODO: Handle Taxes
# Assert that the order totals are same
# Cases handled according to OrderStatus
# XXX: Handle case of PartiallyShipped
if order_data['OrderStatus']['value'] == 'Unshipped':
assert sale.total_amount == Decimal(
order_data['OrderTotal']['Amount']['value']) * Decimal(
order_data['NumberOfItemsUnshipped']['value']
)
elif order_data['OrderStatus']['value'] == 'Shipped':
assert sale.total_amount == Decimal(
order_data['OrderTotal']['Amount']['value']) * Decimal(
order_data['NumberOfItemsShipped']['value']
)
# We import only completed orders, so we can confirm them all
cls.quote([sale])
cls.confirm([sale])
# TODO: Process the order for invoice as the payment info is received
return sale
示例3: create_using_amazon_data
# 需要导入模块: from trytond.pool import Pool [as 别名]
# 或者: from trytond.pool.Pool import find_or_create_using_amazon_data [as 别名]
def create_using_amazon_data(cls, order_data, line_data):
"""
Create a sale using amazon data
:param order_data: Order data from amazon
:return: Active record of record created
"""
Party = Pool().get('party.party')
Address = Pool().get('party.address')
SaleChannel = Pool().get('sale.channel')
ChannelException = Pool().get('channel.exception')
amazon_channel = SaleChannel(
Transaction().context['current_channel']
)
assert amazon_channel.source == 'amazon_mws'
party_values = {
'name': order_data['BuyerName']['value'],
'email': order_data['BuyerEmail']['value'],
}
party = Party.find_or_create_using_amazon_data(party_values)
if 'Phone' in order_data['ShippingAddress']:
party.add_phone_using_amazon_data(
order_data['ShippingAddress']['Phone']['value']
)
party_invoice_address = party_shipping_address = \
Address.find_or_create_for_party_using_amazon_data(
party, order_data['ShippingAddress']
)
sale = cls.get_sale_using_amazon_data(order_data, line_data)
sale.party = party.id
sale.invoice_address = party_invoice_address.id
sale.shipment_address = party_shipping_address.id
sale.channel = amazon_channel.id
sale.save()
# TODO: Handle Discounts
# TODO: Handle Taxes
if sale.total_amount != Decimal(
order_data['OrderTotal']['Amount']['value']
):
ChannelException.create([{
'origin': '%s,%s' % (sale.__name__, sale.id),
'log': 'Order total does not match.',
'channel': sale.channel.id,
}])
return sale
# Process sale now
tryton_action = amazon_channel.get_tryton_action(
order_data['OrderStatus']['value']
)
try:
sale.process_to_channel_state(order_data['OrderStatus']['value'])
except UserError, e:
# Expecting UserError will only come when sale order has
# channel exception.
# Just ignore the error and leave this order in draft state
# and let the user fix this manually.
ChannelException.create([{
'origin': '%s,%s' % (sale.__name__, sale.id),
'log': "Error occurred on transitioning to state %s.\nError "
"Message: %s" % (tryton_action['action'], e.message),
'channel': sale.channel.id,
}])