def _process_shipmentitem_promoion(shipmentitem, event, category): item = ShipmentItemPromotionItem(shipmentitem=shipmentitem, category=category) item.promotiontype = mwsdecode.element_auto_text(event, 'PromotionType') item.promotionid = mwsdecode.element_auto_text(event, 'PromotionId') item.promotionamount = _currency_money(item, event, 'PromotionAmount') item.save() return item
def _process_debt_event_item(debt, event): item = DebtRecoveryItem(debtrecoveryevent=debt) item.recoveryamount = _currency_money(item, event, 'RecoveryAmount') item.originalamount = _currency_money(item, event, 'OriginalAmount') item.groupbegindate = mwsdecode.mws_datestr_to_datetime(mwsdecode.element_auto_text(event, 'GroupBeginDate')) item.groupenddate = mwsdecode.mws_datestr_to_datetime(mwsdecode.element_auto_text(event, 'GroupEndDate')) item.save()
def _orderitem_money(orderitem, element, tag): amount = tag + "/Amount" currency = tag + '/CurrencyCode' amount_value = mwsdecode.element_auto_text(element, amount, '0.0') cureency_code = mwsdecode.element_auto_text(element, currency) if cureency_code is not None and orderitem.item_currency is None: orderitem.item_currency = cureency_code return amount_value
def _currency_money(dbmodel, element, tag): amount = tag + "/CurrencyAmount" currency = tag + '/CurrencyCode' amount_value = mwsdecode.element_auto_text(element, amount, '0.0') cureency_code = mwsdecode.element_auto_text(element, currency) if cureency_code is not None and dbmodel.currency is None: dbmodel.currency = cureency_code return amount_value
def _currency_money(data, element, tag): amount = tag + "/Amount" currency = tag + '/CurrencyCode' amount_value = mwsdecode.element_auto_text(element, amount, '0.0') cureency_code = mwsdecode.element_auto_text(element, currency) if cureency_code is not None and data["currency"] is None: data["currency"] = cureency_code return amount_value
def _process_adjustment_event_item(ad, event): item = AdjustmentItem(adjustmentevnet=ad) item.quantity = int(mwsdecode.element_auto_text(event, 'Quantity', '0')) item.perunitamount = _currency_money(item, event, 'PerUnitAmount') item.totalamount = _currency_money(item, event, 'TotalAmount') item.seller_sku = mwsdecode.element_auto_text(event, 'SellerSKU') item.fnsku = mwsdecode.element_auto_text(event, 'FnSKU') item.productdescription = mwsdecode.element_auto_text(event, 'ProductDescription') item.asin = mwsdecode.element_auto_text(event, 'ASIN') item.save()
def _process_retrocharge_event(task, event): amazonid = mwsdecode.element_auto_text(event, 'AmazonOrderId') posteddate = mwsdecode.mws_datestr_to_datetime(mwsdecode.element_auto_text(event, 'PostedDate')) item, created = RetrochargeEvent.objects.get_or_create(sellerid=task.sellerid, amazonorderid=amazonid, posteddate=posteddate) if not created: return item.retrochargeeventtype = mwsdecode.element_auto_text(event, 'RetrochargeEventType') item.basetax = _currency_money(item, event, 'BaseTax') item.shippingtax = _currency_money(item, event, 'ShippingTax') item.marketplacename = mwsdecode.element_auto_text(event, 'MarketplaceName') item.save()
def _process_response(task, response): """ 处理返回结果 :param task: :return: """ if response is None or response['code'] != '00000': logger.info("response error %s " % response) task.reset_init() return tree = mwsdecode.tree_ignore_namepace(response['mwsResponse']) if tree is None: return if mwsdecode.is_error_response(tree): logger.info("%s reponse error: %s" % (task.sellerid, response)) return result = "" if response['action'] == 'ListOrderItems': result = 'ListOrderItemsResult' elif response['action'] == 'ListOrderItemsByNextToken': result = 'ListOrderItemsByNextTokenResult' items = mwsdecode.element_auto_list(tree, ('%s/OrderItems/OrderItem' % result)) amazon_order_id = mwsdecode.element_auto_text( tree, ('%s/AmazonOrderId' % result)) try: order = Order.objects.get(sellerid=task.sellerid, amazon_order_id=amazon_order_id) for item in items: _process_orderitem(order=order, amazon_order_id=amazon_order_id, itemele=item) if order.order_status in [ 'Shipped', 'InvoiceUnconfirmed', 'Canceled', 'Unfulfillable' ]: order.pulled_items = 2 else: order.pulled_items = 1 order.save() except MultipleObjectsReturned: logger.info( "find MultipleObjectsReturned on order %s-%s" % task.sellerid, amazon_order_id) nexttoken = mwsdecode.element_auto_text(tree, ('%s/NextToken' % result)) if nexttoken is None: task.task_finished() else: task.need_nexttoken(nexttoken)
def _process_response(task, response): """ 处理返回结果 :param task: :return: """ if response is None or response['code'] != '00000': logger.info("response error %s " % response) task.reset_init() return tree = mwsdecode.tree_ignore_namepace(response['mwsResponse']) if tree is None: return task.update_last_request_time() if mwsdecode.is_error_response(tree): logger.info("%s reponse error: %s" % (task.sellerid, response)) return result = '' if response['action'] == 'ListOrders': result = 'ListOrdersResult' elif response['action'] == 'ListOrdersByNextToken': result = 'ListOrdersByNextTokenResult' orders_path = result + '/Orders/Order' orders = mwsdecode.element_auto_list(tree, orders_path) for item in orders: _process_order(task, item) nexttoken_path = result + "/NextToken" nexttoken = mwsdecode.element_auto_text(tree, nexttoken_path) if nexttoken is None: task.task_finished() else: task.need_nexttoken(nexttoken)
def _process_performance_event(task, event): item = PerformanceBondRefundEvent(sellerid=task.sellerid) item.marketplacecountrycode = mwsdecode.element_auto_text(event, 'MarketplaceCountryCode') item.amount = _currency_money(item, event, 'Amount') groupids = mwsdecode.element_auto_list(event, 'ProductGroupList/ProductGroup') pgids = map(lambda x: x.text, groupids) item.productgrouplist = ",".join(pgids) item.save()
def _process_adjustment_event(task, event): item = AdjustmentEvent(sellerid=task.sellerid) item.adjustmenttype = mwsdecode.element_auto_text(event, 'AdjustmentType') item.adjustmentamount = _currency_money(item, event, 'AdjustmentAmount') item.post_date = task.last_after_datetime item.save() items = mwsdecode.element_auto_list(event, 'AdjustmentItemList/AdjustmentItem') for it in items: _process_adjustment_event_item(item, it)
def _process_rental_event(task, event): amazonid = mwsdecode.element_auto_text(event, 'AmazonOrderId') posteddate = mwsdecode.mws_datestr_to_datetime(mwsdecode.element_auto_text(event, 'PostedDate')) tetype = mwsdecode.element_auto_text(event, 'RentalEventType') item, created = RentalTransactionEvent.objects.get_or_create(sellerid=task.sellerid, amazonorderid=amazonid, posteddate=posteddate, rentaleventtype=tetype) if not created: return item.extensionlength = int(mwsdecode.element_auto_text(event, 'ExtensionLength', '0')) item.marketplacename = mwsdecode.element_auto_text(event, 'MarketplaceName') item.rentalinitialvalue = _currency_money(item, event, 'RentalInitialValue') item.rentalreimbursement = _currency_money(item, event, 'RentalReimbursement') item.save() chargelist = mwsdecode.element_auto_list(event, 'RentalChargeList/ChargeComponent') for cl in chargelist: _process_rental_event_charge(item, cl) feelist = mwsdecode.element_auto_list(event, 'RentalFeeList/FeeComponent') for fl in feelist: _process_rental_event_fee(item, fl)
def _process_paywithamazon_event(task, event): item = PayWithAmazonEvent(sellerid=task.sellerid) item.sellerorderid = mwsdecode.element_auto_text(event, 'SellerOrderId') item.transactionposteddate = mwsdecode.mws_datestr_to_datetime(mwsdecode.element_auto_text(event, 'TransactionPostedDate')) item.businessobjecttype = mwsdecode.element_auto_text(event, 'businessobjecttype') item.saleschannel = mwsdecode.element_auto_text(event, 'SalesChannel') item.charge_type = mwsdecode.element_auto_text(event, 'Charge/ChargeType') item.charge_amount = _currency_money(item, event, 'Charge/ChargeAmount') item.paymentamounttype = mwsdecode.element_auto_text(event, 'PaymentAmountType') item.amountdescription = mwsdecode.element_auto_text(event, 'AmountDescription') item.fulfillmentchannel = mwsdecode.element_auto_text(event, 'FulfillmentChannel') item.storename = mwsdecode.element_auto_text(event, 'StoreName') item.save() feelist = mwsdecode.element_auto_list(event, 'FeeList/FeeComponent') for fee in feelist: _process_paywithamazon_fee(item, event)
def _process_shipmentevent_item(shipment, event, category): item = ShipmentItem(shipmentevent=shipment, category=category) item.sellersku = mwsdecode.element_auto_text(event, 'SellerSKU') item.orderitemid = mwsdecode.element_auto_text(event, 'OrderItemId') item.orderadjustmentitemid = mwsdecode.element_auto_text(event, 'OrderAdjustmentItemId') item.quantityshipped = int(mwsdecode.element_auto_text(event, 'QuantityShipped', '0')) item.costofpointsgranted = _currency_money(item, event, 'CostOfPointsGranted') item.cotofpointsreturned = _currency_money(item, event, 'CostOfPointsReturned') item.save() chargers = [] itemchargelist = mwsdecode.element_auto_list(event, 'ItemChargeList/ChargeComponent') for ic in itemchargelist: chargers.append(_process_shipmentitem_charge(item, ic, 'normal')) itemchargeadjustmentlist = mwsdecode.element_auto_list(event, 'ItemChargeAdjustmentList/ChargeComponent') for ica in itemchargeadjustmentlist: chargers.append(_process_shipmentitem_charge(item, ica, 'adjustment')) for charger in chargers: item.charger = Decimal(item.charger) + Decimal(charger.charegeamount) item.currency = charger.currency fees = [] itemfeelist = mwsdecode.element_auto_list(event, 'ItemFeeList/FeeComponent') for ifee in itemfeelist: fees.append(_process_shipmentitem_fee(item, ifee, 'normal')) itemfeeadjustmentlist = mwsdecode.element_auto_list(event, 'ItemFeeAdjustmentList/FeeComponent') for ifeea in itemfeeadjustmentlist: fees.append(_process_shipmentitem_fee(item, ifeea, 'adjustment')) for fee in fees: item.fee = Decimal(item.fee) + Decimal(fee.feeamount) promotions = [] promotionlist = mwsdecode.element_auto_list(event, 'PromotionList/Promotion') for p in promotionlist: promotions.append(_process_shipmentitem_promoion(item, p, 'normal')) promotionadjustmentlist = mwsdecode.element_auto_list(event, 'PromotionAdjustmentList/Promotion') for pa in promotionadjustmentlist: promotions.append(_process_shipmentitem_promoion(item, pa, 'adjustment')) for promotion in promotions: item.promotion = Decimal(item.promotion) + Decimal(promotion.promotionamount) item.save()
def _process_serviceprovider_event(task, event): item = SolutionProviderCreditEvent(sellerid=task.sellerid) item.providertransactiontype = mwsdecode.element_auto_text(event, 'ProviderTransactionType') item.sellerorderid = mwsdecode.element_auto_text(event, 'SellerOrderId') item.marketplaceid = mwsdecode.element_auto_text(event, 'MarketplaceId') item.marketplacecountrycode = mwsdecode.element_auto_text(event, 'MarketplaceCountryCode') item.sellerstorename = mwsdecode.element_auto_text(event, 'SellerStoreName') item.providerid = mwsdecode.element_auto_text(event, 'ProviderId') item.providerstorename = mwsdecode.element_auto_text(event, 'ProviderStoreName') item.save()
def _process_debt_event(task, event): item = DebtRecoveryEvent(sellerid=task.sellerid) item.debtrecoverytype = mwsdecode.element_auto_text(event, 'DebtRecoveryType') item.recoveryamount = _currency_money(item, event, 'RecoveryAmount') item.overpaymentcredit = _currency_money(item, event, 'OverPaymentCredit') item.save() debtitems = mwsdecode.element_auto_list(event, 'DebtRecoveryItemList/DebtRecoveryItem') for db in debtitems: _process_debt_event_item(item, db) chargeinstruments = mwsdecode.element_auto_list(event, 'ChargeInstrumentList/ChargeInstrument') for ci in chargeinstruments: _process_debt_event_charge(item, ci)
def _process_shipmentevents(task, event, category): posteddate = mwsdecode.mws_datestr_to_datetime(mwsdecode.element_auto_text(event, 'PostedDate')) amazonorderid = mwsdecode.element_auto_text(event, 'AmazonOrderId') shipment, created = ShipmentEvent.objects.get_or_create(sellerid=task.sellerid, category=category, amazonorderid=amazonorderid, posteddate=posteddate) if not created: # ignore if the evnet is recorded return shipment.sellerorderid = mwsdecode.element_auto_text(event, 'SellerOrderId') shipment.marketplacename = mwsdecode.element_auto_text(event, 'MarketplaceName') shipment.save() orderchargementlist = mwsdecode.element_auto_list(event, 'OrderChargeList/ChargeComponent') for ordercharge in orderchargementlist: _process_shipmentevent_charge(shipment, ordercharge, 'order') orderchargeadjustmentlist = mwsdecode.element_auto_list(event, 'OrderChargeAdjustmentList/ChargeComponent') for oj in orderchargeadjustmentlist: _process_shipmentevent_charge(shipment, oj, 'orderadjustment') shipmentfeelist = mwsdecode.element_auto_list(event, 'ShipmentFeeList/FeeComponent') for sf in shipmentfeelist: _process_shipmentevent_fee(shipment, sf, 'shipment') shipmentfeeadjustmentlist = mwsdecode.element_auto_list(event, 'ShipmentFeeAdjustmentList/FeeComponent') for sfa in shipmentfeeadjustmentlist: _process_shipmentevent_fee(shipment, sfa, 'shipmentadjustment') orderfeelist = mwsdecode.element_auto_list(event, 'OrderFeeList/FeeComponent') for of in orderfeelist: _process_shipmentevent_fee(shipment, of, 'order') orderfeeadjustmentlist = mwsdecode.element_auto_list(event, 'OrderFeeAdjustmentList/FeeComponent') for ofa in orderfeeadjustmentlist: _process_shipmentevent_fee(shipment, ofa, 'orderadjustment') directpaymentlist = mwsdecode.element_auto_list(event, 'DirectPaymentList/DirectPayment') for dp in directpaymentlist: _process_shipmentevent_direct(shipment, dp) shipmentitemlist = mwsdecode.element_auto_list(event, 'ShipmentItemList/ShipmentItem') for si in shipmentitemlist: _process_shipmentevent_item(shipment, si, 'normal') shipmentitemadjustmentlist = mwsdecode.element_auto_list(event, 'ShipmentItemAdjustmentList/ShipmentItem') for sia in shipmentitemadjustmentlist: _process_shipmentevent_item(shipment, sia, 'adjustment')
def _process_servicefee_event(task, event): item = ServiceFeeEvent(sellerid=task.sellerid) item.amazonorderid = mwsdecode.element_auto_text(event, 'AmazonOrderId') item.feereason = mwsdecode.element_auto_text(event, 'FeeReason') item.sellersku = mwsdecode.element_auto_text(event, 'SellerSKU') item.fnsku = mwsdecode.element_auto_text(event, 'FnSKU') item.feedescription = mwsdecode.element_auto_text(event, 'FeeDescription') item.asin = mwsdecode.element_auto_text(event, 'ASIN') item.postdate = task.last_after_datetime item.save() feelist = mwsdecode.element_auto_list(event, 'FeeList/FeeComponent') for fl in feelist: _process_servicefee_event_fee(item, fl)
def _process_order(task, order): torder, created = Order.objects.get_or_create( sellerid=task.sellerid, amazon_order_id=mwsdecode.element_auto_text(order, 'AmazonOrderId')) status = mwsdecode.element_auto_text(order, 'OrderStatus') if created or torder.order_status != status: torder.seller_order_id = mwsdecode.element_auto_text( order, 'SellerOrderId') torder.purchase_date = mwsdecode.mws_datestr_to_datetime( mwsdecode.element_auto_text(order, 'PurchaseDate')) torder.last_update_date = mwsdecode.mws_datestr_to_datetime( mwsdecode.element_auto_text(order, 'LastUpdateDate')) torder.order_status = status torder.fulfillment_channel = mwsdecode.element_auto_text( order, 'FulfillmentChannel') torder.sales_channel = mwsdecode.element_auto_text( order, 'SalesChannel') torder.order_channel = mwsdecode.element_auto_text( order, 'OrderChannel') torder.ship_service_level = mwsdecode.element_auto_text( order, 'ShipServiceLevel') torder.recipient_name = mwsdecode.element_auto_text( order, 'ShippingAddress/Name') torder.address_line1 = mwsdecode.element_auto_text( order, 'ShippingAddress/AddressLine1') torder.address_line2 = mwsdecode.element_auto_text( order, 'ShippingAddress/AddressLine2') torder.address_line3 = mwsdecode.element_auto_text( order, 'ShippingAddress/AddressLine3') torder.city = mwsdecode.element_auto_text(order, 'ShippingAddress/City') torder.county = mwsdecode.element_auto_text(order, 'ShippingAddress/County') torder.district = mwsdecode.element_auto_text( order, 'ShippingAddress/district') torder.state_or_region = mwsdecode.element_auto_text( order, 'ShippingAddress/StateOrRegion') torder.postal_code = mwsdecode.element_auto_text( order, 'ShippingAddress/PostalCode') torder.country_code = mwsdecode.element_auto_text( order, 'ShippingAddress/CountryCode') torder.phone = mwsdecode.element_auto_text(order, 'ShippingAddress/Phone') torder.order_currency_code = mwsdecode.element_auto_text( order, 'OrderTotal/CurrencyCode') torder.order_total_amount = mwsdecode.element_auto_text( order, 'OrderTotal/Amount', '0.0') torder.number_items_shipped = int( mwsdecode.element_auto_text(order, 'NumberOfItemsShipped', '0')) torder.number_items_unshipped = int( mwsdecode.element_auto_text(order, 'NumberOfItemsUnshipped', '0')) # payment_execution_detail = order.get("PaymentExecutionDetail", None) # object ignore torder.payment_method = mwsdecode.element_auto_text( order, 'PaymentMethod') torder.marketplaceid = mwsdecode.element_auto_text( order, 'MarketplaceId') torder.buyer_email = mwsdecode.element_auto_text(order, 'BuyerEmail') torder.buyer_name = mwsdecode.element_auto_text(order, 'BuyerName') torder.shipment_service_level_category = mwsdecode.element_auto_text( order, 'ShipmentServiceLevelCategory') torder.shipped_by_amazon_tfm = mwsdecode.mws_boolean( mwsdecode.element_auto_text(order, 'ShippedByAmazonTFM', 'false')) torder.tfm_shipment_status = mwsdecode.element_auto_text( order, 'TFMShipmentStatus') torder.cba_displayable_shipping_label = mwsdecode.element_auto_text( order, 'CbaDisplayableShippingLabel') torder.order_type = mwsdecode.element_auto_text(order, 'OrderType') torder.earliest_ship_date = mwsdecode.mws_datestr_to_datetime( mwsdecode.element_auto_text(order, 'EarliestShipDate')) torder.latest_ship_date = mwsdecode.mws_datestr_to_datetime( mwsdecode.element_auto_text(order, 'LatestShipDate')) torder.earliest_delivery_date = mwsdecode.mws_datestr_to_datetime( mwsdecode.element_auto_text(order, 'EarliestDeliveryDate')) torder.latest_delivery_date = mwsdecode.mws_datestr_to_datetime( mwsdecode.element_auto_text(order, 'LatestDeliveryDate')) torder.is_business_order = mwsdecode.mws_boolean( mwsdecode.element_auto_text(order, 'IsBusinessOrder', 'false')) torder.purchase_order_number = mwsdecode.element_auto_text( order, 'PurchaseOrderNumber') torder.is_prime = mwsdecode.mws_boolean( mwsdecode.element_auto_text(order, 'IsPrime', 'false')) torder.is_premenum_order = mwsdecode.mws_boolean( mwsdecode.element_auto_text(order, 'IsPremiumOrder', 'false')) torder.save()
def _process_shipmentevent_direct(shipment, event): item = ShipmentDirectPaymentItem(shipmentevent=shipment) item.directpaymentpype = mwsdecode.element_auto_text(event, 'DirectPaymentType') item.directpaymentamount = _currency_money(item, event, 'DirectPaymentAmount') item.save()
def _process_loan_event(task, event): item = LoanServicingEvent(sellerid=task.sellerid) item.loanamount = _currency_money(item, event, 'LoanAmount') item.sourcebusinesseventtype = mwsdecode.element_auto_text(event, 'SourceBusinessEventType') item.save()
def _process_debt_event_charge(debt, event): item = DebtRecoveryChargeInstrumentItem(debtrecoveryevent=debt) item.description = mwsdecode.element_auto_text(event, 'Description') item.tail = mwsdecode.element_auto_text(event, 'Tail') item.amount = _currency_money(item, event, 'Amount') item.save()
def _process_orderitem(order, amazon_order_id, itemele): orderitemid = mwsdecode.element_auto_text(itemele, 'OrderItemId') item, created = OrderItem.objects.get_or_create( order_item_id=orderitemid, sellerid=order.sellerid, amazon_order_id=order.amazon_order_id) if created: item.purchase_date = order.purchase_date item.fulfillment_channel = order.fulfillment_channel item.phone = order.phone item.marketplaceid = order.marketplaceid item.asin = mwsdecode.element_auto_text(itemele, 'ASIN') item.seller_sku = mwsdecode.element_auto_text(itemele, 'SellerSKU') item.customized_url = mwsdecode.element_auto_text( itemele, 'BuyerCustomizedInfo/CustomizedURL') item.title = mwsdecode.element_auto_text(itemele, 'Title') item.quantity_ordered = int( mwsdecode.element_auto_text(itemele, 'QuantityOrdered', '0')) item.quantity_shipped = int( mwsdecode.element_auto_text(itemele, 'QuantityShipped', '0')) item.points_number = int( mwsdecode.element_auto_text(itemele, 'PointsGranted/PointsNumber', '0')) item.points_monetary_value = _orderitem_money( item, itemele, 'PointsGranted/PointsMonetaryValue') item.item_price = _orderitem_money(item, itemele, 'ItemPrice') item.shipping_price = _orderitem_money(item, itemele, 'ShippingPrice') item.gift_wrap_price = _orderitem_money(item, itemele, 'GiftWrapPrice') item.item_tax = _orderitem_money(item, itemele, 'ItemTax') item.shipping_tax = _orderitem_money(item, itemele, 'ShippingTax') item.gift_wrap_tax = _orderitem_money(item, itemele, 'GiftWrapTax') item.shipping_discount = _orderitem_money(item, itemele, 'ShippingDiscount') item.promotion_discount = _orderitem_money(item, itemele, 'PromotionDiscount') promotionids = mwsdecode.element_auto_list(itemele, 'PromotionIds/PromotionId') pids = map(lambda x: x.text, promotionids) item.promotion_ids = ",".join(pids) item.cod_fee = _orderitem_money(item, itemele, 'CODFee') item.cod_fee_discount = _orderitem_money(item, itemele, 'CODFeeDiscount') item.gift_message_text = mwsdecode.element_auto_text( itemele, 'GiftMessageText') item.gift_wrap_level = mwsdecode.element_auto_text(itemele, 'GiftWrapLevel') item.invoice_requirement = mwsdecode.element_auto_text( itemele, 'InvoiceData/InvoiceRequirement') item.buyer_selected_invoice_category = mwsdecode.element_auto_text( itemele, 'InvoiceData/BuyerSelectedInvoiceCategory') item.invoice_title = mwsdecode.element_auto_text( itemele, 'InvoiceData/InvoiceTitle') item.invoice_information = mwsdecode.element_auto_text( itemele, 'InvoiceData/InvoiceInformation') item.condition_note = mwsdecode.element_auto_text(itemele, 'ConditionNote') item.conditionid = mwsdecode.element_auto_text(itemele, 'ConditionId') item.condition_subtype_id = mwsdecode.element_auto_text( itemele, 'ConditionSubtypeId') item.scheduled_delivery_start_date = mwsdecode.element_auto_text( itemele, 'ScheduledDeliveryStartDate') item.scheduled_delivery_end_date = mwsdecode.element_auto_text( itemele, 'ScheduledDeliveryEndDate') item.price_designation = mwsdecode.element_auto_text( itemele, 'PriceDesignation') item.save()
def _process_servicefee_event_fee( service, event): item = ServiceFeeEventFeeItem(servicefeeevent=service) item.feetype = mwsdecode.element_auto_text(event, 'FeeType') item.feeamount = _currency_money(item, event, 'FeeAmount') item.save()
def _process_shipmentitem_charge(shipmentitem, event, category): item = ShipmentItemChargeItem(shipmentitem=shipmentitem, category=category) item.charegetype = mwsdecode.element_auto_text(event, 'ChargeType') item.charegeamount = _currency_money(item, event, 'ChargeAmount') item.save() return item
def _process_rental_event_fee(rental, event): item = RentalTransactionFeeItem(rentaltransactionevent=rental) item.feetype = mwsdecode.element_auto_text(event, 'FeeType') item.feeamount = _currency_money(item, event, 'FeeAmount') item.save()
def _process_rental_event_charge(rental, event): item = RentalTransactionChargeItem(rentaltransactionevent=rental) item.charegetype = mwsdecode.element_auto_text(event, 'ChargeType') item.charegeamount = _currency_money(item, event, 'ChargeAmount') item.save()
def _process_response(task, response): """ 处理返回结果 :param task: :return: """ if response is None or response['code'] != '00000': logger.info("response error %s " % response) task.reset_init() return tree = mwsdecode.tree_ignore_namepace(response['mwsResponse']) if tree is None: return if mwsdecode.is_error_response(tree): logger.info("%s reponse error: %s" % (task.sellerid, response)) return result = '' if response['action'] == 'ListFinancialEvents': result = 'ListFinancialEventsResult' elif response['action'] == 'ListFinancialEventsByNextToken': result = 'ListFinancialEventsByNextTokenResult' financial_tree_path = result + '/FinancialEvents' financial_tree = tree.find(financial_tree_path) shipmentevents = mwsdecode.element_auto_list(financial_tree, "ShipmentEventList/ShipmentEvent") for item in shipmentevents: _process_shipmentevents(task, item, 'normal') refundevents = mwsdecode.element_auto_list(financial_tree, "RefundEventList/ShipmentEvent") for rf in refundevents: _process_shipmentevents(task, rf, 'refund') guaranteeclaimevents = mwsdecode.element_auto_list(financial_tree, "GuaranteeClaimEventList/ShipmentEvent") for gc in guaranteeclaimevents: _process_shipmentevents(task, gc, 'guarantee_claim') chargebackevents = mwsdecode.element_auto_list(financial_tree, "ChargebackEventList/ShipmentEvent") for cb in chargebackevents: _process_shipmentevents(task, cb, 'chargeback') paywithamazonevents = mwsdecode.element_auto_list(financial_tree, 'PayWithAmazonEventList/PayWithAmazonEvent') for pwa in paywithamazonevents: _process_paywithamazon_event(task, pwa) serviceprovidercreditevents = mwsdecode.element_auto_list(financial_tree, 'ServiceProviderCreditEventList/SolutionProviderCreditEvent') for spc in serviceprovidercreditevents: _process_serviceprovider_event(task, spc) retrochargeevents = mwsdecode.element_auto_list(financial_tree, 'RetrochargeEventList/RetrochargeEvent') for rc in retrochargeevents: _process_retrocharge_event(task, rc) rentaltransactionevents = mwsdecode.element_auto_list(financial_tree, 'RentalTransactionEventList/RentalTransactionEvent') for rte in rentaltransactionevents: _process_rental_event(task, rte) performancebondrefundevents = mwsdecode.element_auto_list(financial_tree, 'PerformanceBondRefundEventList/PerformanceBondRefundEvent') for pb in performancebondrefundevents: _process_performance_event(task, pb) servicefeeevents = mwsdecode.element_auto_list(financial_tree, 'ServiceFeeEventList/ServiceFeeEvent') for sf in servicefeeevents: _process_servicefee_event(task, sf) debtrecoveryevents = mwsdecode.element_auto_list(financial_tree, 'DebtRecoveryEventList/DebtRecoveryEvent') for dr in debtrecoveryevents: _process_debt_event(task, dr) loanservicingevents = mwsdecode.element_auto_list(financial_tree, 'LoanServicingEventList/LoanServicingEvent') for ls in loanservicingevents: _process_loan_event(task, ls) adjustmentevents = mwsdecode.element_auto_list(financial_tree, 'AdjustmentEventList/AdjustmentEvent') for ae in adjustmentevents: _process_adjustment_event(task, ae) nexttoken_path = result + "/NextToken" nexttoken = mwsdecode.element_auto_text(tree, nexttoken_path) if nexttoken is None: task.task_finished() else: task.need_nexttoken(nexttoken)
def _process_shipmentitem_fee(shipmentitem, event, category): item = ShipmentItemFeeItem(shipmentitem=shipmentitem, category=category) item.feetype = mwsdecode.element_auto_text(event, 'FeeType') item.feeamount = _currency_money(item, event, 'FeeAmount') item.save() return item
def _process_paywithamazon_fee(paywithamazon, event): item = PayWithAmazonFeeItem(paywithamazonevent=paywithamazon) item.feetype = mwsdecode.element_auto_text(event, 'FeeType') item.feeamount = _currency_money(item, event, 'FeeAmount') item.save()