Esempio n. 1
0
 def action(self, order):
     """"""
     url = '%s/' % (self.context.absolute_url())
     props = getToolByName(self.context, 'portal_properties').pcommerce_properties
     props_paypal = getToolByName(self.context, 'portal_properties').paypal_properties
     portal_state = getMultiAdapter((self.context, self.context.REQUEST), name=u'plone_portal_state')
     lang = self.context.REQUEST.get('LANGUAGE', portal_state.default_language())
     price = CurrencyAware(order.totalincl)
     interface = self.get_paypal_interface_obj()
     cart = IShoppingCart(self.context)
     cart_products = cart.getProducts()
     product_titles = []
     for product in cart_products:
         product_titles.append(product['title'] + ' ' )
     button_params = {
         'BUTTONCODE': 'ENCRYPTED',
         'BUTTONTYPE': 'BUYNOW',
         'BUTTONSUBTYPE': 'SERVICES',
         'BUYNOWTEXT': 'PAYNOW',
         'L_BUTTONVAR0': 'notify_url=%s' % props_paypal.ipn_notify_url,
         'L_BUTTONVAR1': 'amount=%.2f' % float(price.getRoundedValue()),
         'L_BUTTONVAR2': 'item_name=%s' % "".join(product_titles),
         'L_BUTTONVAR3': 'item_number=%s' % order.orderid,
         'L_BUTTONVAR4': 'return=%s' % url + 'payment.success',
         'L_BUTTONVAR5': 'cancel_return=%s' % url + 'payment.cancel',
         'L_BUTTONVAR6': 'no_shipping=1',
         'L_BUTTONVAR7': 'no_note=1',
         'L_BUTTONVAR8': 'rm=1',
         'L_BUTTONVAR11': 'currency_code=EUR'
     }
     response = interface.bm_create_button(**button_params)
     return response.EMAILLINK
Esempio n. 2
0
class Cart(BrowserView):
    """view of the shopping cart
    """

    template = ViewPageTemplateFile('cart.pt')

    def __call__(self):
        self.request.set('disable_border', 1)
        self.cart = IShoppingCart(self.context)
        return self.template()

    @property
    @memoize
    def size(self):
        return self.cart.amount()

    @property
    @memoize
    def products(self):
        return self.cart.getProducts()

    @property
    @memoize
    def checkout(self):
        return getToolByName(self.context,
                             'portal_membership').checkPermission(
                                 CheckOut, self.context)

    @property
    @memoize
    def price(self):
        return CurrencyAware(self.cart.getPrice())

    @property
    @memoize
    def taxincl(self):
        taxes = ITaxes(self.context)
        return {'tax': taxes.taxincl[0], 'taxname': taxes.taxincl[1]}
Esempio n. 3
0
class Cart(BrowserView):
    """view of the shopping cart
    """

    template = ViewPageTemplateFile('cart.pt')

    def __call__(self):
        self.request.set('disable_border', 1)
        self.cart = IShoppingCart(self.context)
        return self.template()
    
    @property
    @memoize
    def size(self):
        return self.cart.amount()
    
    @property
    @memoize
    def products(self):
        return self.cart.getProducts()
    
    @property
    @memoize
    def checkout(self):
        return getToolByName(self.context, 'portal_membership').checkPermission(CheckOut, self.context)
    
    @property
    @memoize
    def price(self):
        return CurrencyAware(self.cart.getPrice())
    
    @property 
    @memoize
    def taxincl(self):
        taxes = ITaxes(self.context)
        return {'tax': taxes.taxincl[0],
                'taxname': taxes.taxincl[1]}
        
Esempio n. 4
0
 def action(self, order):
     """"""
     url = '%s/' % (self.context.absolute_url())
     props = getToolByName(self.context,
                           'portal_properties').pcommerce_properties
     props_paypal = getToolByName(self.context,
                                  'portal_properties').paypal_properties
     portal_state = getMultiAdapter((self.context, self.context.REQUEST),
                                    name=u'plone_portal_state')
     lang = self.context.REQUEST.get('LANGUAGE',
                                     portal_state.default_language())
     price = CurrencyAware(order.totalincl)
     interface = self.get_paypal_interface_obj()
     cart = IShoppingCart(self.context)
     cart_products = cart.getProducts()
     product_titles = []
     for product in cart_products:
         product_titles.append(product['title'] + ' ')
     button_params = {
         'BUTTONCODE': 'ENCRYPTED',
         'BUTTONTYPE': 'BUYNOW',
         'BUTTONSUBTYPE': 'SERVICES',
         'BUYNOWTEXT': 'PAYNOW',
         'L_BUTTONVAR0': 'notify_url=%s' % props_paypal.ipn_notify_url,
         'L_BUTTONVAR1': 'amount=%.2f' % float(price.getRoundedValue()),
         'L_BUTTONVAR2': 'item_name=%s' % "".join(product_titles),
         'L_BUTTONVAR3': 'item_number=%s' % order.orderid,
         'L_BUTTONVAR4': 'return=%s' % url + 'payment.success',
         'L_BUTTONVAR5': 'cancel_return=%s' % url + 'payment.cancel',
         'L_BUTTONVAR6': 'no_shipping=1',
         'L_BUTTONVAR7': 'no_note=1',
         'L_BUTTONVAR8': 'rm=1',
         'L_BUTTONVAR11': 'currency_code=EUR'
     }
     response = interface.bm_create_button(**button_params)
     return response.EMAILLINK
Esempio n. 5
0
class Cart(BaseCart):
    """view of the shopping cart
    """
    template = ViewPageTemplateFile('cart.pt')

    @property
    @memoize
    def products(self):
        if not hasattr(self, 'cart'):
            self.cart = IShoppingCart(self.context)
        order = None
        if self.request.SESSION.get(ORDER_SESSION_KEY, None) is not None:
            registry = IOrderRegistry(self.context)
            order = registry.getOrder(self.request.SESSION.get(ORDER_SESSION_KEY, 0))
            if order is not None:
                increaseStockFromOrder(registry, order)
        products = self.cart.getProducts()
        uid_catalog = getToolByName(self.context, 'uid_catalog')
        for product in products:
            provider = IStock(uid_catalog(UID=product['uid'])[0].getObject())
            if not len(product['variations']):
                product['stock'] = provider.stock()
            else:
                product['stock'] = provider.variationStock([uid_catalog(UID=v['uid'])[0].getObject() for v in product['variations']])
            product['outofstock'] = product['amount'] > product['stock']
            product['checkout_allowed'] = not product['outofstock'] or provider.outOfStockCheckoutAllowed()
        if order is not None:
            decreaseStockFromOrder(registry, order)
        return products
    
    @property
    @memoize
    def outofstock(self):
        for product in self.products:
            if not product['checkout_allowed']:
                return True