def _all(self, resource): xml = xml_setter('MaxReturned', 100) xml = xml_setter(resource + QUICKBOOKS_ENUMS.OPP_QR + 'Rq', xml, metaData='NoMetaData', iterator='Start') return self._prepare_request(xml)
def _prepare_request(self, req_body): xml_type = utils.get_xml_type(self.qb_type) xml = xml_setter(f'{xml_type}MsgsRq', req_body, onError='stopOnError') xml = xml_setter(xml_type, xml) xml = get_xml_meta_info(self.qb_type) + xml return xml
def _update(self, resource, object): xml = '' xml += xml_setter( resource + QUICKBOOKS_ENUMS.OPP_MOD + 'Rq', object.as_xml(opp_type=QUICKBOOKS_ENUMS.OPP_MOD, ref_fields=self.ref_fields, change_fields=self.mod_fields, complex_fields=self.complex_fields)) return self._prepare_request(xml)
def as_xml(self, class_name=None, indent=0, opp_type=QUICKBOOKS_ENUMS.OPP_ADD, version=QUICKBOOKS_ENUMS.VERSION_13, **kwargs): xml = '' for field_key, options in self.fields.items(): if hasattr(self, field_key): obj = getattr(self, field_key) if not obj: continue if is_primitive(obj): if self.fields[field_key]['validator']['type'] == self.validator.BOOLTYPE: xml += xml_setter(field_key, str(obj).lower(), encode=True) else: xml += xml_setter(field_key, str(obj), encode=True) elif is_list(obj): for element in obj: if is_primitive(element): if self.fields[field_key]['validator']['type'] == self.validator.BOOLTYPE: xml += xml_setter(field_key, str(element).lower(), encode=True) else: xml += xml_setter(field_key, str(element), encode=True) else: if field_key in kwargs.get('ref_fields', []): xml += element.as_xml(class_name=field_key, indent=indent, opp_type=QUICKBOOKS_ENUMS.OBJ_REF, version=version, **kwargs) elif field_key in kwargs.get('change_fields', []): xml += element.as_xml(class_name=field_key, indent=indent, opp_type=opp_type, version=version, **kwargs) elif field_key in kwargs.get('complex_fields', []): xml += element.as_xml(class_name=field_key, indent=indent, opp_type='', version=version, **kwargs) else: if field_key in kwargs.get('ref_fields', []): xml += obj.as_xml(class_name=field_key, indent=indent, opp_type=QUICKBOOKS_ENUMS.OBJ_REF, version=version, **kwargs) elif field_key in kwargs.get('change_fields', []): xml += obj.as_xml(class_name=field_key, indent=indent, opp_type=opp_type, version=version, **kwargs) elif field_key in kwargs.get('complex_fields', []): xml += obj.as_xml(class_name=field_key, indent=indent, opp_type='', version=version, **kwargs) class_name = self.__class__.__name__ if not class_name else class_name xml = xml_setter(class_name + opp_type, xml) return xml
def _find_by_full_name(self, resource, full_name): xml = xml_setter('FullName', full_name) xml = xml_setter(resource + QUICKBOOKS_ENUMS.OPP_QR + 'Rq', xml, metaData='NoMetaData') return self._prepare_request(xml)
def _find_by_id(self, resource, id, field_name='ListID'): xml = xml_setter(field_name, id) xml = xml_setter(resource + QUICKBOOKS_ENUMS.OPP_QR + 'Rq', xml, metaData='NoMetaData') return self._prepare_request(xml)
def _delete(self, resource, object): xml = '' xml += xml_setter(resource + QUICKBOOKS_ENUMS.OPP_DEL + 'Rq', object.as_xml(opp_type=QUICKBOOKS_ENUMS.OPP_DEL)) return self._prepare_request(xml)
def _prepare_request(self, req_body): xml = xml_setter('QBXMLMsgsRq', req_body, onError='stopOnError') xml = xml_setter('QBXML', xml) xml = get_xml_meta_info() + xml return xml