models.py 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498
  1. # -*- coding: utf-8 -*-
  2. from openerp import models, fields, api
  3. class OrdenServicio(models.Model):
  4. _inherit = 'orden.servicio'
  5. ############################################################
  6. # ACCOUNT INVOICE
  7. ############################################################
  8. @api.model
  9. def getOrdenServicio(self,domain):
  10. OrdenServicio = self.env['orden.servicio'].search(domain)
  11. decimal_precision = self.env['decimal.precision'].precision_get('Account')
  12. values = []
  13. for servicio in OrdenServicio:
  14. values.append({
  15. 'id': servicio.id,
  16. 'name': servicio.name,
  17. 'state': servicio.state,
  18. 'celular_partner': servicio.celular_partner,
  19. 'telefono_partner': servicio.telefono_partner,
  20. 'planned_start_date': servicio.planned_start_date,
  21. 'planned_end_date': servicio.planned_end_date,
  22. 'contacto_obra': servicio.contacto_obra,
  23. 'responsable': servicio.responsable,
  24. 'order_date': servicio.order_date,
  25. 'name_obra': servicio.name_obra,
  26. 'name_local': servicio.name_local,
  27. 'distancia_obra': servicio.distancia_obra,
  28. 'croquis': servicio.croquis,
  29. 'hrs_total': servicio.hrs_total,
  30. 'zona_obra': servicio.zona_obra,
  31. 'obs_obra': servicio.obs_obra,
  32. 'sale_order_id': servicio.sale_order_id,
  33. 'company_id': servicio.company_id,
  34. 'currency_id': servicio.currency_id,
  35. 'partner_id': [
  36. servicio.partner_id.id,
  37. servicio.partner_id.name,
  38. servicio.partner_id.ruc,
  39. ],
  40. 'partner_info': {
  41. 'mobile': servicio.partner_id.mobile,
  42. 'phone': servicio.partner_id.phone,
  43. },
  44. 'user_id': [
  45. servicio.user_id.id,
  46. servicio.user_id.name,
  47. ],
  48. })
  49. return values
  50. class ServicioProducto(models.Model):
  51. _inherit = 'servicio.producto'
  52. ############################################################
  53. # servicio producto
  54. ############################################################
  55. @api.model
  56. def getServicioProducto(self,domain):
  57. ServicioProducto = self.env['servicio.producto'].search(domain)
  58. decimal_precision = self.env['decimal.precision'].precision_get('Account')
  59. values = []
  60. for line in ServicioProducto:
  61. values.append({
  62. 'id': line.id,
  63. 'servicio_id':line.servicio_id.id,
  64. 'number':line.servicio_id.name,
  65. 'order_date': line.servicio_id.order_date,
  66. 'user_id': [
  67. line.servicio_id.user_id.id,
  68. line.servicio_id.user_id.name,
  69. ],
  70. 'partner_id': [
  71. line.servicio_id.partner_id.id,
  72. line.servicio_id.partner_id.name,
  73. line.servicio_id.partner_id.ruc,
  74. ],
  75. 'invoice_state': line.servicio_id.state,
  76. 'product_id': [
  77. line.product_id.id,
  78. line.product_id.display_name,
  79. line.product_id.categ_id.complete_name,
  80. line.product_id.standard_price,
  81. line.product_id.lst_price,
  82. ],
  83. 'product_category_id': line.product_id.categ_id.id,
  84. 'price_unit': line.price_unit,
  85. 'price_subtotal': line.subtotal,
  86. 'quantity': line.quantity,
  87. 'price_unit_currency': round(line.price_unit * (line.servicio_id.company_id.currency_id.rate / line.servicio_id.currency_id.rate),decimal_precision),
  88. 'price_subtotal_currency': round(line.subtotal * (line.servicio_id.company_id.currency_id.rate / line.servicio_id.currency_id.rate),decimal_precision),
  89. 'amount_currency': round((line.quantity * line.price_unit) * (line.servicio_id.company_id.currency_id.rate / line.servicio_id.currency_id.rate),decimal_precision),
  90. })
  91. return values
  92. class ServicioInsumo(models.Model):
  93. _inherit = 'servicio.insumo'
  94. ############################################################
  95. # servicio insumo
  96. ############################################################
  97. @api.model
  98. def getServicioInsumo(self,domain):
  99. ServicioInsumo = self.env['servicio.insumo'].search(domain)
  100. decimal_precision = self.env['decimal.precision'].precision_get('Account')
  101. values = []
  102. for insumo in ServicioInsumo:
  103. values.append({
  104. 'id': insumo.id,
  105. 'servicio_id':insumo.servicio_id.id,
  106. 'number':insumo.servicio_id.name,
  107. 'order_date': insumo.servicio_id.order_date,
  108. 'user_id': [
  109. insumo.servicio_id.user_id.id,
  110. insumo.servicio_id.user_id.name,
  111. ],
  112. 'partner_id': [
  113. insumo.servicio_id.partner_id.id,
  114. insumo.servicio_id.partner_id.name,
  115. insumo.servicio_id.partner_id.ruc,
  116. ],
  117. 'invoice_state': insumo.servicio_id.state,
  118. 'product_id': [
  119. insumo.product_id.id,
  120. insumo.product_id.display_name,
  121. insumo.product_id.categ_id.complete_name,
  122. insumo.product_id.standard_price,
  123. ],
  124. 'product_category_id': insumo.product_id.categ_id.id,
  125. 'descripcion': insumo.descripcion,
  126. 'price_unit': insumo.price_unit,
  127. 'price_subtotal': insumo.subtotal,
  128. 'quantity': insumo.quantity,
  129. 'price_unit_currency': round(insumo.price_unit * (insumo.servicio_id.company_id.currency_id.rate / insumo.servicio_id.currency_id.rate),decimal_precision),
  130. 'price_subtotal_currency': round(insumo.subtotal * (insumo.servicio_id.company_id.currency_id.rate / insumo.servicio_id.currency_id.rate),decimal_precision),
  131. 'amount_currency': round((insumo.quantity * insumo.price_unit) * (insumo.servicio_id.company_id.currency_id.rate / insumo.servicio_id.currency_id.rate),decimal_precision),
  132. })
  133. return values
  134. class ServicioLogistica(models.Model):
  135. _inherit = 'servicio.logistica'
  136. ############################################################
  137. # servicio logistica
  138. ############################################################
  139. @api.model
  140. def getServicioLogistica(self,domain):
  141. ServicioLogistica = self.env['servicio.logistica'].search(domain)
  142. decimal_precision = self.env['decimal.precision'].precision_get('Account')
  143. values = []
  144. for logistica in ServicioLogistica:
  145. values.append({
  146. 'id': logistica.id,
  147. 'servicio_id':logistica.servicio_id.id,
  148. 'number':logistica.servicio_id.name,
  149. 'order_date': logistica.servicio_id.order_date,
  150. 'user_id': [
  151. logistica.servicio_id.user_id.id,
  152. logistica.servicio_id.user_id.name,
  153. ],
  154. 'partner_id': [
  155. logistica.servicio_id.partner_id.id,
  156. logistica.servicio_id.partner_id.name,
  157. logistica.servicio_id.partner_id.ruc,
  158. ],
  159. 'invoice_state': logistica.servicio_id.state,
  160. 'product_id': [
  161. logistica.product_id.id,
  162. logistica.product_id.display_name,
  163. logistica.product_id.categ_id.complete_name,
  164. logistica.product_id.standard_price,
  165. ],
  166. 'product_category_id': logistica.product_id.categ_id.id,
  167. 'fecha': logistica.fecha,
  168. 'descripcion': logistica.descripcion,
  169. 'price_unit': logistica.price_unit,
  170. 'price_subtotal': logistica.subtotal,
  171. 'quantity': logistica.quantity,
  172. 'price_unit_currency': round(logistica.price_unit * (logistica.servicio_id.company_id.currency_id.rate / logistica.servicio_id.currency_id.rate),decimal_precision),
  173. 'price_subtotal_currency': round(logistica.subtotal * (logistica.servicio_id.company_id.currency_id.rate / logistica.servicio_id.currency_id.rate),decimal_precision),
  174. 'amount_currency': round((logistica.quantity * logistica.price_unit) * (logistica.servicio_id.company_id.currency_id.rate / logistica.servicio_id.currency_id.rate),decimal_precision),
  175. })
  176. return values
  177. class DevolucionInsumo(models.Model):
  178. _inherit = 'devolucion.insumo'
  179. ############################################################
  180. # servicio logistica
  181. ############################################################
  182. @api.model
  183. def getDevolucionInsumo(self,domain):
  184. DevolucionInsumo = self.env['devolucion.insumo'].search(domain)
  185. decimal_precision = self.env['decimal.precision'].precision_get('Account')
  186. values = []
  187. for devolucion in DevolucionInsumo:
  188. values.append({
  189. 'id': devolucion.id,
  190. 'servicio_id':devolucion.servicio_id.id,
  191. 'number':devolucion.servicio_id.name,
  192. 'order_date': devolucion.servicio_id.order_date,
  193. 'user_id': [
  194. devolucion.servicio_id.user_id.id,
  195. devolucion.servicio_id.user_id.name,
  196. ],
  197. 'partner_id': [
  198. devolucion.servicio_id.partner_id.id,
  199. devolucion.servicio_id.partner_id.name,
  200. devolucion.servicio_id.partner_id.ruc,
  201. ],
  202. 'invoice_state': devolucion.servicio_id.state,
  203. 'product_id': [
  204. devolucion.product_id.id,
  205. devolucion.product_id.display_name,
  206. devolucion.product_id.categ_id.complete_name,
  207. devolucion.product_id.standard_price,
  208. ],
  209. 'product_category_id': devolucion.product_id.categ_id.id,
  210. 'descripcion': devolucion.descripcion,
  211. 'price_unit': devolucion.price_unit,
  212. 'price_subtotal': devolucion.subtotal,
  213. 'quantity': devolucion.quantity,
  214. 'price_unit_currency': round(devolucion.price_unit * (devolucion.servicio_id.company_id.currency_id.rate / devolucion.servicio_id.currency_id.rate),decimal_precision),
  215. 'price_subtotal_currency': round(devolucion.subtotal * (devolucion.servicio_id.company_id.currency_id.rate / devolucion.servicio_id.currency_id.rate),decimal_precision),
  216. 'amount_currency': round((devolucion.quantity * devolucion.price_unit) * (devolucion.servicio_id.company_id.currency_id.rate / devolucion.servicio_id.currency_id.rate),decimal_precision),
  217. })
  218. return values
  219. class RecepcionFabrica(models.Model):
  220. _inherit = 'recepcion.fabrica'
  221. ############################################################
  222. # recepción fabrica
  223. ############################################################
  224. @api.model
  225. def getRecepcionFabrica(self,domain):
  226. RecepcionFabrica = self.env['recepcion.fabrica'].search(domain)
  227. decimal_precision = self.env['decimal.precision'].precision_get('Account')
  228. values = []
  229. for fabrica in RecepcionFabrica:
  230. values.append({
  231. 'id': fabrica.id,
  232. 'servicio_id':fabrica.servicio_id.id,
  233. 'number':fabrica.servicio_id.name,
  234. 'order_date': fabrica.servicio_id.order_date,
  235. 'user_id': [
  236. fabrica.servicio_id.user_id.id,
  237. fabrica.servicio_id.user_id.name,
  238. ],
  239. 'partner_id': [
  240. fabrica.servicio_id.partner_id.id,
  241. fabrica.servicio_id.partner_id.name,
  242. fabrica.servicio_id.partner_id.ruc,
  243. ],
  244. 'invoice_state': fabrica.servicio_id.state,
  245. 'product_id': [
  246. fabrica.product_id.id,
  247. fabrica.product_id.display_name,
  248. fabrica.product_id.categ_id.complete_name,
  249. fabrica.product_id.standard_price,
  250. ],
  251. 'product_category_id': fabrica.product_id.categ_id.id,
  252. 'price_unit': fabrica.price_unit,
  253. 'price_subtotal': fabrica.subtotal,
  254. 'quantity': fabrica.quantity,
  255. 'price_unit_currency': round(fabrica.price_unit * (fabrica.servicio_id.company_id.currency_id.rate / fabrica.servicio_id.currency_id.rate),decimal_precision),
  256. 'price_subtotal_currency': round(fabrica.subtotal * (fabrica.servicio_id.company_id.currency_id.rate / fabrica.servicio_id.currency_id.rate),decimal_precision),
  257. 'amount_currency': round((fabrica.quantity * fabrica.price_unit) * (fabrica.servicio_id.company_id.currency_id.rate / fabrica.servicio_id.currency_id.rate),decimal_precision),
  258. })
  259. return values
  260. class ResCompany(models.Model):
  261. _inherit = 'res.company'
  262. @api.model
  263. def getResCompany(self,domain):
  264. ResCompany = self.env['res.company'].search(domain)
  265. values = []
  266. for company in ResCompany:
  267. values.append({
  268. 'id': company.id,
  269. 'name': company.name,
  270. 'currency_id': [
  271. company.currency_id.id,
  272. company.currency_id.name,
  273. ],
  274. 'company_ruc': company.partner_id.ruc,
  275. 'phone': company.phone,
  276. 'logo': company.logo,
  277. })
  278. return values
  279. class ResCurrency(models.Model):
  280. _inherit = 'res.currency'
  281. @api.model
  282. def getResCurrency(self,domain):
  283. ResCurrency = self.env['res.currency'].search(domain)
  284. values = []
  285. for currency in ResCurrency:
  286. values.append({
  287. 'id': currency.id,
  288. 'name': currency.name,
  289. 'symbol': currency.symbol,
  290. 'rate_silent': currency.rate_silent,
  291. 'base': currency.base,
  292. 'decimal_separator': currency.decimal_separator,
  293. 'decimal_places': currency.decimal_places,
  294. 'thousands_separator': currency.thousands_separator,
  295. 'symbol_position': currency.symbol_position,
  296. })
  297. return values
  298. class ResPartner(models.Model):
  299. _inherit = 'res.partner'
  300. @api.model
  301. def getResPartner(self,domain):
  302. ResPartner = self.env['res.partner'].search(domain)
  303. values = []
  304. for partner in ResPartner:
  305. values.append({
  306. 'id': partner.id,
  307. 'name': partner.name,
  308. 'ruc': partner.ruc,
  309. 'street': partner.street,
  310. 'city': partner.city,
  311. 'phone': partner.phone,
  312. 'mobile': partner.mobile,
  313. 'email': partner.email,
  314. 'property_product_pricelist': partner.property_product_pricelist.name,
  315. 'property_product_pricelist_purchase': partner.property_product_pricelist_purchase.name,
  316. 'credit': partner.credit,
  317. 'debit': partner.debit,
  318. 'supplier': partner.supplier,
  319. })
  320. return values
  321. class ProductProduct(models.Model):
  322. _inherit = 'product.product'
  323. ############################################################
  324. # PRODUCT PRODUCT
  325. ############################################################
  326. @api.model
  327. def getProductProduct(self,domain):
  328. ProductProduct = self.env['product.product'].search(domain)
  329. values = []
  330. for product in ProductProduct:
  331. attributeValuesLines = map(lambda x: x.id, product.attribute_value_ids)
  332. attributeIDS = []
  333. for arttIds in self.env['product.attribute.value'].search([('id', 'in', attributeValuesLines)]):
  334. attributeIDS.append(arttIds.attribute_id.id)
  335. try:
  336. # sale list price
  337. sale_price = map(lambda x: x.id, product.pricelists)
  338. saleIDS = []
  339. for item in self.env['product.pricelist'].search([('id', 'in', sale_price)]):
  340. saleIDS.append(item.id)
  341. # purchase list price
  342. buy_price = map(lambda x: x.id, product.purchase_pricelists)
  343. buyIDS = []
  344. for item in self.env['product.pricelist'].search([('id', 'in', buy_price)]):
  345. buyIDS.append(item.id)
  346. except:
  347. buyIDS = []
  348. saleIDS = []
  349. try:
  350. brand = product.product_brand_id.id
  351. except:
  352. brand = ''
  353. values.append({
  354. 'id': product.id,
  355. 'name': product.name,
  356. 'display_name': product.display_name,
  357. 'standard_price': product.standard_price,
  358. 'lst_price': product.lst_price,
  359. 'categ_id': {
  360. 'id': product.categ_id.id,
  361. 'name': product.categ_id.name,
  362. 'complete_name': product.categ_id.complete_name,
  363. },
  364. 'product_brand_id':brand,
  365. 'atribute_value_ids': attributeValuesLines,
  366. 'attribute_ids': attributeIDS,
  367. 'qty_available': product.qty_available,
  368. 'default_code': product.default_code,
  369. 'image_medium': product.image_medium,
  370. 'pricelists': saleIDS,
  371. 'purchase_pricelists':buyIDS,
  372. 'product_tmpl_id': product.product_tmpl_id.id,
  373. 'image': product.image,
  374. 'ean13': product.ean13,
  375. })
  376. return values
  377. ############################################################
  378. # PRODUCT PRODUCT - STOCK 'minimo_quantity': product.minimo_quantity,
  379. ############################################################
  380. @api.model
  381. def getProductProductStock(self,domain):
  382. ProductProduct = self.env['product.product'].search(domain)
  383. values = []
  384. for product in ProductProduct:
  385. attributeValuesLines = map(lambda x: x.id, product.attribute_value_ids)
  386. attributeIDS = []
  387. for arttIds in self.env['product.attribute.value'].search([('id', 'in', attributeValuesLines)]):
  388. attributeIDS.append(arttIds.attribute_id.id)
  389. values.append({
  390. 'id': product.id,
  391. 'display_name': product.display_name,
  392. 'standard_price': product.standard_price,
  393. 'lst_price': product.lst_price,
  394. 'categ_id': {
  395. 'id': product.categ_id.id,
  396. 'name': product.categ_id.name,
  397. 'complete_name': product.categ_id.complete_name,
  398. },
  399. 'atribute_value_ids': attributeValuesLines,
  400. 'attribute_ids': attributeIDS,
  401. 'default_code': product.default_code,
  402. 'ean13': product.ean13,
  403. })
  404. return values
  405. class ProductCategory(models.Model):
  406. _inherit = 'product.category'
  407. @api.model
  408. def getProductCategory(self,domain):
  409. ProductCategory = self.env['product.category'].search(domain)
  410. values = []
  411. for category in ProductCategory:
  412. values.append({
  413. 'id': category.id,
  414. 'name': category.name,
  415. 'display_name': category.display_name,
  416. 'parent_id': [
  417. category.parent_id.id,
  418. category.parent_id.name,
  419. ],
  420. })
  421. return values
  422. class StockLocation(models.Model):
  423. _inherit = 'stock.location'
  424. @api.model
  425. def getStockLocation(self,domain):
  426. StockLocation = self.env['stock.location'].search(domain)
  427. values = []
  428. for location in StockLocation:
  429. values.append({
  430. 'id': location.id,
  431. 'name': location.name,
  432. 'display_name': location.display_name,
  433. 'parent_name': location.location_id.name,
  434. 'company_id': [
  435. location.company_id.id,
  436. location.company_id.name,
  437. ],
  438. 'store_id': [
  439. location.store_id.id,
  440. location.store_id.name,
  441. ],
  442. 'usage': location.usage,
  443. })
  444. return values