def setSenderPhone(self, areaCode, number = None):
     param = areaCode
     if self.sender == None:
         self.sender = PagSeguroSender()
     if isinstance(param, PagSeguroPhone):
         self.sender.setPhone(param)
     else:
         self.sender.setPhone(PagSeguroPhone(param, number))
 def setSender(self, name, email = None, areaCode = None, number = None):
     param = name
     if isinstance(param, (list, tuple)):
         self.sender = PagSeguroSender(param)
     else:
         sender = PagSeguroSender()
         sender.setName(param)
         sender.setEmail(email)
         sender.setPhone(PagSeguroPhone(areaCode, number))
         self.sender = sender
 def readTransaction(cls, xml):
     
     parser = PagSeguroXmlParser(xml)
     data = parser.getResult('transaction')
     
     transaction = PagSeguroTransaction()
     
     if 'lastEventDate' in data:
         transaction.setLastEventDate(data['lastEventDate'])
     
     if 'date' in data:
         transaction.setDate(data['date'])
     
     if 'code' in data:
         transaction.setCode(data['code'])
     
     if 'reference' in data:
         transaction.setReference(data['reference'])
         
     if 'type' in data:
         transaction.setType(data['type'])
         
     if 'status' in data:
         transaction.setStatus(data['status'])
         
     if 'paymentMethod' in data:
         paymentMethod = PagSeguroPaymentMethod()
         if 'type' in data['paymentMethod']:
             paymentMethod.setType(data['paymentMethod']['type'])
         if 'code' in data['paymentMethod']:
             paymentMethod.setCode(data['paymentMethod']['code'])
         transaction.setPaymentMethod(paymentMethod)
     
     if 'grossAmount' in data:
         transaction.setGrossAmount(data['grossAmount'])
         
     if 'discountAmount' in data:
         transaction.setDiscountAmount(data['discountAmount'])
         
     if 'feeAmount' in data:
         transaction.setFeeAmount(data['feeAmount'])
         
     if 'netAmount' in data:
         transaction.setNetAmount(data['netAmount'])
         
     if 'extraAmount' in data:
         transaction.setExtraAmount(data['extraAmount'])
         
     if 'installmentCount' in data:
         transaction.setInstallmentCount(data['installmentCount'])
         
     if data['items']['item'] and isinstance(data['items']['item'], (list,tuple)):
         items = {}
         i = 0
         for v in data['items']['item']:
             item = cls.parseTransactionItem(v)
             items[i] = item
             i = i + 1
             
         transaction.setItems(items)
     
     if 'sender' in data:
         sender = PagSeguroSender()
         if 'name' in data['sender']:
             sender.setName(data['sender']['name'])
         if 'email' in data['sender']:
             sender.setEmail(data['sender']['email'])
         if 'phone' in data['sender']:
             phone = PagSeguroPhone()
             if 'areaCode' in data['sender']['phone']:
                 phone.setAreaCode(data['sender']['phone']['areaCode'])
             if 'number' in data['sender']['phone']:
                 phone.setNumber(data['sender']['phone']['number'])
             sender.setPhone(phone)
         transaction.setSender(sender)
     
     if data['shipping'] and isinstance(data['shipping'], (list, tuple)):
         shipping = PagSeguroShipping()
         if 'type' in data['shipping']:
             shipping.setType(data['shipping']['type'])
         if 'cost' in data['shipping']:
             shipping.setCost(data['shipping']['cost'])
         if data['shipping']['address'] and isinstance(data['shipping']['address'],(list,tuple)):
             address = PagSeguroAddress()
             if 'street' in data['shipping']['address']:
                 address.setStreet(data['shipping']['address']['street'])
             if 'number' in data['shipping']['address']:
                 address.setNumber(data['shipping']['address']['number'])
             if 'complement' in data['shipping']['address']:
                 address.setComplement(data['shipping']['address']['complement'])
             if 'city' in data['shipping']['address']:
                 address.setCity(data['shipping']['address']['city'])
             if 'state' in data['shipping']['address']:
                 address.setState(data['shipping']['address']['state'])
             if 'district' in data['shipping']['address']:
                 address.setDistrict(data['shipping']['address']['district'])
             if 'postalCode' in data['shipping']['address']:
                 address.setPostalCode(data['shipping']['address']['postalCode'])
             if 'country' in data['shipping']['address']:
                 address.setCountry(data['shipping']['address']['country'])
             shipping.setAddress(address)
         transaction.setShipping(shipping)
     
     return transaction
class PagSeguroPaymentRequest:
    sender = None
    currency = None
    items = None
    itemsCount = 0
    redirectURL = None
    extraAmount = None
    reference = None
    shipping = None
    maxAge = None
    maxUses = None
    
    def getSender(self):
        return self.sender
    
    def setSender(self, name, email = None, areaCode = None, number = None):
        param = name
        if isinstance(param, (list, tuple)):
            self.sender = PagSeguroSender(param)
        else:
            sender = PagSeguroSender()
            sender.setName(param)
            sender.setEmail(email)
            sender.setPhone(PagSeguroPhone(areaCode, number))
            self.sender = sender
            
    def setSenderName(self, senderName):
        if self.sender == None:
            self.sender = PagSeguroSender()
        self.sender.setName(senderName)
        
    def setSenderEmail(self, senderEmail):
        if self.sender == None:
            self.sender = PagSeguroSender()
        self.sender.setEmail(senderEmail)
        
    def setSenderPhone(self, areaCode, number = None):
        param = areaCode
        if self.sender == None:
            self.sender = PagSeguroSender()
        if isinstance(param, PagSeguroPhone):
            self.sender.setPhone(param)
        else:
            self.sender.setPhone(PagSeguroPhone(param, number))
    
    def getCurrency(self):
        return self.currency
    
    def setCurrency(self, currency):
        self.currency = currency    
        
    def getItems(self):
        return self.items
    
    def setItems(self, items):
        if isinstance(items, (list, tuple)):
            i = {}
            for x, v in items:
                if isinstance(v, PagSeguroItem):
                    i[x] = v
                elif isinstance(v, (list, tuple)):
                    i[x] = PagSeguroItem(v)
            self.items = i
            
    def addItem(self, _id, description = None, quantity = None, amount = None, weight = None, shippingCost = None):
        param = _id
        if self.items == None:
            self.items = {}
        if isinstance(param, (list, tuple)):
            self.items[self.itemsCount] = PagSeguroItem(param)
            self.itemsCount = self.itemsCount + 1
        elif isinstance(param, PagSeguroItem):
            self.items[self.itemsCount] = param
            self.itemsCount = self.itemsCount + 1
        else:
            item = PagSeguroItem()
            item.setId(param)
            item.setDescription(description)
            item.setQuantity(quantity)
            item.setAmount(amount)
            item.setWeight(weight)
            item.setShippingCost(shippingCost)
            self.items[self.itemsCount] = item
            self.itemsCount = self.itemsCount + 1
            
    def getRedirectURL(self):
        return self.redirectURL
    
    def setRedirectURL(self, redirectURL):
        self.redirectURL = redirectURL
        
    def getExtraAmount(self):
        return self.extraAmount
    
    def setExtraAmount(self, extraAmount):
        self.extraAmount = extraAmount
        
    def getReference(self):
        return self.reference
    
    def setReference(self, reference):
        self.reference = reference
    
    def getShipping(self):
        return self.shipping
    
    def setShipping(self, address, _type=None):
        param = address
        if isinstance(param,PagSeguroShipping):
            self.shipping = param
        else:
            shipping = PagSeguroShipping()
            if isinstance(param, (list, tuple)):
                shipping.setAddress(PagSeguroAddress(param))
            elif isinstance(param, PagSeguroAddress):
                shipping.setAddress(param)
            if type:
                if isinstance(_type, PagSeguroShippingType):
                    shipping.setType(_type)
                else:
                    shipping.setType(PagSeguroShippingType(_type))
            self.shipping = shipping
            
    def setShippingAddress(self, postalCode = None, street = None, number = None, complement = None, district = None, city = None, state = None, country = None):
        param = postalCode
        if self.shipping == None:
            self.shipping = PagSeguroShipping()
        if isinstance(param, (list, tuple)):
            self.shipping.setAddress(PagSeguroAddress(param))
        elif isinstance(param,PagSeguroAddress):
            self.shipping.setAddress(param)
        else:
            address = PagSeguroAddress()
            address.setPostalCode(postalCode)
            address.setStreet(street)
            address.setNumber(number)
            address.setComplement(complement)
            address.setDistrict(district)
            address.setCity(city)
            address.setState(state)
            address.setCountry(country)
            self.shipping.setAddress(address)
    
    def setShippingType(self, _type):
        param = _type
        if self.shipping == None:
            self.shipping = PagSeguroShipping()
        if isinstance(param, PagSeguroShippingType):
            self.shipping.setType(param)
        else:
            self.shipping.setType(PagSeguroShippingType(param))
    
    def getMaxAge(self):
        return self.maxAge
    
    def setMaxAge(self, maxAge):
        self.maxAge = maxAge
        
    def getMaxUses(self):
        return self.maxUses
    
    def setMaxUses(self, maxUses):
        self.maxUses = maxUses
    
    def register(self, credentials):
        #TODO VERIFY INSTANCE CREDENTIALS
        return PagSeguroPaymentService.createCheckoutRequest(credentials, self)
    
    def __unicode__(self):
        email = None
        if self.sender and self.sender.getEmail():
            email = self.sender.getEmail()
        return "PagSeguroPaymentRequest(Reference=%s,     SenderEmail=%s)" % (self.reference, email)
 def setSenderEmail(self, senderEmail):
     if self.sender == None:
         self.sender = PagSeguroSender()
     self.sender.setEmail(senderEmail)
 def setSenderName(self, senderName):
     if self.sender == None:
         self.sender = PagSeguroSender()
     self.sender.setName(senderName)