workorder.js 35 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906
  1. openerp.workorder_printbioelectric = function (instance, local) {
  2. local.widgetInstance = null;
  3. local.parentInstance = null;
  4. local.WorkOrderbioelectricWidget = instance.Widget.extend({
  5. template : "workorder_printbioelectric.WorkOrderbioelectric",
  6. jsonDoc:[],
  7. init:function(parent){
  8. this._super(parent);
  9. },
  10. updateId : function(id){
  11. var self = this;
  12. self.id=id;
  13. },
  14. start: function () {
  15. var self = this;
  16. this.$el.click(function (e) {
  17. self.fecthInitial();
  18. });
  19. },
  20. valorNull:function(dato){
  21. var valor ="";
  22. if (dato){
  23. if(dato == true && typeof dato == 'boolean'){
  24. valor=" ";
  25. }else{
  26. valor=dato;
  27. }
  28. }
  29. return valor;
  30. },
  31. fecthInitial: function(){
  32. var id= openerp.webclient._current_state.id;
  33. var self = this;
  34. self.fecthRepairWorkorder(id).then(function(RepairWorkorder){
  35. return RepairWorkorder;
  36. }).then(function(RepairWorkorder){
  37. self.RepairWorkorder = RepairWorkorder;
  38. return self.fecthRepairWorkorderLine();
  39. }).then(function(RepairWorkorderLine){
  40. self.RepairWorkorderLine = RepairWorkorderLine;
  41. return self.fecthRepairPedidosorderLine();
  42. }).then(function(RepairPedidosorderLine){
  43. self.RepairPedidosorderLine = RepairPedidosorderLine;
  44. return self.fecthRepairResumenorderLine();
  45. }).then(function(RepairResumenorderLine){
  46. self.RepairResumenorderLine = RepairResumenorderLine;
  47. return self.fecthRepairCalidadorderLine();
  48. }).then(function(RepairCalidadorderLine){
  49. self.RepairCalidadorderLine = RepairCalidadorderLine;
  50. return self.fecthRepairSugerenciaorderLine();
  51. }).then(function(RepairSugerenciaorderLine){
  52. self.RepairSugerenciaorderLine = RepairSugerenciaorderLine;
  53. return self.fecthRepairProblemasorderLine();
  54. }).then(function(RepairProblemasorderLine){
  55. self.RepairProblemasorderLine = RepairProblemasorderLine;
  56. return self.fetchRepairWorkorderConsumed();
  57. }).then(function(RepairWorkorderConsumed){
  58. self.RepairWorkorderConsumed = RepairWorkorderConsumed;
  59. return self.drawPDF();
  60. });
  61. return false;
  62. },
  63. fecthRepairWorkorder: function(id){
  64. var domain=[['id','=', id]];
  65. var RepairWorkorder = new instance.web.Model('repair.workorderimproved');
  66. return RepairWorkorder.call('getRepairWorkorder',[domain], {
  67. context: new instance.web.CompoundContext()
  68. });
  69. },
  70. fecthRepairWorkorderLine: function () {
  71. var self = this;
  72. var workorder_ids = _.flatten(_.map(self.RepairWorkorder,function(map){
  73. return map.id;
  74. }));
  75. var domain=[['workorder_id','in',workorder_ids]];
  76. var RepairWorkorderLine = new instance.web.Model('repair.workorderimproved.line');
  77. return RepairWorkorderLine.call('getRepairWorkorderLine',[domain], {
  78. context: new instance.web.CompoundContext()
  79. });
  80. },
  81. fecthRepairPedidosorderLine: function () {
  82. var self = this;
  83. var workorder_ids = _.flatten(_.map(self.RepairWorkorder,function(map){
  84. return map.id;
  85. }));
  86. var domain=[['workorder_id','in',workorder_ids]];
  87. var RepairPedidosorderLine = new instance.web.Model('repair.pedidosorderimproved.line');
  88. return RepairPedidosorderLine.call('getRepairPedidosorderLine',[domain], {
  89. context: new instance.web.CompoundContext()
  90. });
  91. },
  92. fecthRepairResumenorderLine: function () {
  93. var self = this;
  94. var workorder_ids = _.flatten(_.map(self.RepairWorkorder,function(map){
  95. return map.id;
  96. }));
  97. var domain=[['workorder_id','in',workorder_ids]];
  98. var RepairResumenorderLine = new instance.web.Model('repair.resumenorderimproved.line');
  99. return RepairResumenorderLine.call('getRepairResumenorderLine',[domain], {
  100. context: new instance.web.CompoundContext()
  101. });
  102. },
  103. fecthRepairCalidadorderLine: function () {
  104. var self = this;
  105. var workorder_ids = _.flatten(_.map(self.RepairWorkorder,function(map){
  106. return map.id;
  107. }));
  108. var domain=[['workorder_id','in',workorder_ids]];
  109. var RepairCalidadorderLine = new instance.web.Model('repair.calidadorderimproved.line');
  110. return RepairCalidadorderLine.call('getRepairCalidadorderLine',[domain], {
  111. context: new instance.web.CompoundContext()
  112. });
  113. },
  114. fecthRepairSugerenciaorderLine: function () {
  115. var self = this;
  116. var workorder_ids = _.flatten(_.map(self.RepairWorkorder,function(map){
  117. return map.id;
  118. }));
  119. var domain=[['workorder_id','in',workorder_ids]];
  120. var RepairSugerenciaorderLine = new instance.web.Model('repair.sugerenciaorderimproved.line');
  121. return RepairSugerenciaorderLine.call('getRepairSugerenciaorderLine',[domain], {
  122. context: new instance.web.CompoundContext()
  123. });
  124. },
  125. fecthRepairProblemasorderLine: function () {
  126. var self = this;
  127. var workorder_ids = _.flatten(_.map(self.RepairWorkorder,function(map){
  128. return map.id;
  129. }));
  130. var domain=[['workorder_id','in',workorder_ids]];
  131. var RepairProblemasorderLine = new instance.web.Model('repair.problemasorderimproved.line');
  132. return RepairProblemasorderLine.call('getRepairProblemasorderLine',[domain], {
  133. context: new instance.web.CompoundContext()
  134. });
  135. },
  136. fetchRepairWorkorderConsumed: function () {
  137. var self = this;
  138. var workorder_ids = _.flatten(_.map(self.RepairWorkorder,function(map){
  139. return map.id;
  140. }));
  141. var domain=[['workorder_id','in',workorder_ids]];
  142. var RepairWorkorderConsumed = new instance.web.Model('repair.workorderimproved.consumed');
  143. return RepairWorkorderConsumed.call('getRepairWorkorderConsumed',[domain], {
  144. context: new instance.web.CompoundContext()
  145. });
  146. },
  147. drawPDF:function(){
  148. var self = this;
  149. var doc = self.RepairWorkorder.shift();
  150. var docItem = [];
  151. var docWorkItem = [];
  152. var getColumns = [];
  153. var getColumns1 = [];
  154. var getColumnsMaterial = [];
  155. var docWorkItem1 = [];
  156. var docWorkItem2 = [];
  157. var docWorkItem4 = [];
  158. var docWorkItem5 = [];
  159. var docWorkItem6 = [];
  160. var docWorkItem7 = [];
  161. var docWorkItem8 = [];
  162. var getColumnsMaterial1 = [];
  163. var getColumnsMaterial2 = [];
  164. var getColumnsMaterial4 = [];
  165. var getColumnsMaterial5 = [];
  166. var getColumnsMaterial6 = [];
  167. var getColumnsMaterial7 = [];
  168. var getColumnsMaterial8 = [];
  169. var pdfDoc = new jsPDF();
  170. pdfDoc.addImage("data:image/png;base64," + doc.company_logo, 'PNG',12,5,45,15);
  171. /*
  172. =============================================================
  173. OBTENER LINEAS DEL PEDIDO INICIAL
  174. =============================================================
  175. */
  176. var RepairWorkorderLine = self.RepairWorkorderLine;
  177. for (var i = 0; i < RepairWorkorderLine.length; i++) {
  178. docItem.push({
  179. xnumber : i + 1,
  180. product : RepairWorkorderLine[i].description,
  181. brand : RepairWorkorderLine[i].brand,
  182. number : RepairWorkorderLine[i].number
  183. })
  184. }
  185. getColumns.push({
  186. title : 'A',
  187. dataKey: 'xnumber',
  188. align: 'center',
  189. });
  190. getColumns.push({
  191. title : 'Pedido inicial del cliente L: logrado EP: en proceso P: pendiente',
  192. dataKey: 'product',
  193. align: 'left',
  194. });
  195. getColumns.push({
  196. title : 'Cant.',
  197. dataKey: 'brand',
  198. align: 'center',
  199. });
  200. getColumns.push({
  201. title : 'Estado',
  202. dataKey: 'number',
  203. align: 'center',
  204. });
  205. var RepairProblemasorderLine = self.RepairProblemasorderLine;
  206. if(RepairProblemasorderLine.length > 0){
  207. for (var i = 0; i < RepairProblemasorderLine.length; i++) {
  208. docWorkItem.push({
  209. xnumber : i + 1,
  210. description : RepairProblemasorderLine[i].description
  211. });
  212. }
  213. getColumnsMaterial.push({
  214. title : 'B',
  215. dataKey: 'xnumber',
  216. align: 'center',
  217. });
  218. getColumnsMaterial.push({
  219. title : 'Problemas o sintomas encontrados',
  220. dataKey: 'description',
  221. align: 'left',
  222. });
  223. }else{
  224. docWorkItem.push({
  225. xnumber : '-',
  226. description : '-'
  227. });
  228. getColumnsMaterial.push({
  229. title : 'B',
  230. dataKey: 'xnumber',
  231. align: 'center',
  232. });
  233. getColumnsMaterial.push({
  234. title : 'Problemas o sintomas encontrados',
  235. dataKey: 'description',
  236. align: 'left',
  237. });
  238. }
  239. var RepairPedidosorderLine = self.RepairPedidosorderLine;
  240. if(RepairPedidosorderLine.length > 0){
  241. for (var x = 0; x < RepairPedidosorderLine.length; x++) {
  242. docWorkItem1.push({
  243. xnumber : x+1,
  244. description : RepairPedidosorderLine[x].description,
  245. brand : RepairPedidosorderLine[x].brand,
  246. number : RepairPedidosorderLine[x].number
  247. });
  248. }
  249. getColumnsMaterial1.push({
  250. title : 'C',
  251. dataKey: 'xnumber',
  252. align: 'center',
  253. });
  254. getColumnsMaterial1.push({
  255. title : 'Pedido adicional para servicio extra L: logrado EP: en proceso P: pendiente',
  256. dataKey: 'description',
  257. align: 'left',
  258. });
  259. getColumnsMaterial1.push({
  260. title : 'Cant.',
  261. dataKey: 'quantity',
  262. align: 'center',
  263. });
  264. getColumnsMaterial1.push({
  265. title : 'Estado',
  266. dataKey: 'number',
  267. align: 'center',
  268. });
  269. }else{
  270. docWorkItem1.push({
  271. xnumber : '-',
  272. description : '-',
  273. quantity : '-',
  274. number : '-'
  275. });
  276. getColumnsMaterial1.push({
  277. title : 'C',
  278. dataKey: 'xnumber',
  279. align: 'center',
  280. });
  281. getColumnsMaterial1.push({
  282. title : 'Pedido adicional para servicio extra L: logrado EP: en proceso P: pendiente',
  283. dataKey: 'description',
  284. align: 'left',
  285. });
  286. getColumnsMaterial1.push({
  287. title : 'Cant.',
  288. dataKey: 'quantity',
  289. align: 'center',
  290. });
  291. getColumnsMaterial1.push({
  292. title : 'Estado',
  293. dataKey: 'number',
  294. align: 'center',
  295. });
  296. }
  297. var RepairWorkorderConsumed = self.RepairWorkorderConsumed;
  298. if(RepairWorkorderConsumed.length > 0){
  299. for (var r = 0; r < RepairWorkorderConsumed.length; r++) {
  300. docWorkItem5.push({
  301. xnumber : r+1,
  302. description : RepairWorkorderConsumed[r].description
  303. });
  304. }
  305. getColumnsMaterial5.push({
  306. title : 'D',
  307. dataKey: 'xnumber',
  308. align: 'center',
  309. });
  310. getColumnsMaterial5.push({
  311. title : 'Lista de materiales proveidos por Bioelectric',
  312. dataKey: 'description',
  313. align: 'left',
  314. });
  315. }else{
  316. docWorkItem5.push({
  317. xnumber : '-',
  318. description : '-'
  319. });
  320. getColumnsMaterial5.push({
  321. title : 'D',
  322. dataKey: 'xnumber',
  323. align: 'center',
  324. });
  325. getColumnsMaterial5.push({
  326. title : 'Lista de materiales proveidos por Bioelectric',
  327. dataKey: 'description',
  328. align: 'left',
  329. });
  330. }
  331. var RepairCalidadorderLine = self.RepairCalidadorderLine;
  332. if(RepairCalidadorderLine.length > 0){
  333. for (var y = 0; y < RepairCalidadorderLine.length; y++) {
  334. docWorkItem2.push({
  335. xnumber : y+1,
  336. description : RepairCalidadorderLine[y].description,
  337. quantity : RepairCalidadorderLine[y].quantity,
  338. number : RepairCalidadorderLine[y].number
  339. });
  340. }
  341. getColumnsMaterial2.push({
  342. title : 'E',
  343. dataKey: 'xnumber',
  344. align: 'center',
  345. });
  346. getColumnsMaterial2.push({
  347. title : 'Ensayos y control de calidad realizados a los trabajos o equipos entregados al cliente',
  348. dataKey: 'description',
  349. align: 'left',
  350. });
  351. getColumnsMaterial2.push({
  352. title : 'Ficha',
  353. dataKey: 'quantity',
  354. align: 'center',
  355. });
  356. getColumnsMaterial2.push({
  357. title : 'Lacre',
  358. dataKey: 'number',
  359. align: 'center',
  360. });
  361. }else{
  362. docWorkItem2.push({
  363. xnumber : '-',
  364. description : '-',
  365. quantity : '-',
  366. number : '-'
  367. });
  368. getColumnsMaterial2.push({
  369. title : 'E',
  370. dataKey: 'xnumber',
  371. align: 'center',
  372. });
  373. getColumnsMaterial2.push({
  374. title : 'Ensayos y control de calidad realizados a los trabajos o equipos entregados al cliente',
  375. dataKey: 'description',
  376. align: 'left',
  377. });
  378. getColumnsMaterial2.push({
  379. title : 'Ficha',
  380. dataKey: 'quantity',
  381. align: 'center',
  382. });
  383. getColumnsMaterial2.push({
  384. title : 'Lacre',
  385. dataKey: 'number',
  386. align: 'center',
  387. });
  388. }
  389. var RepairResumenorderLine = self.RepairResumenorderLine;
  390. if(RepairResumenorderLine.length > 0){
  391. for (var t = 0; t < RepairResumenorderLine.length; t++) {
  392. docWorkItem7.push({
  393. xnumber : t+1,
  394. description : RepairResumenorderLine[t].description
  395. });
  396. }
  397. getColumnsMaterial7.push({
  398. title : 'F',
  399. dataKey: 'xnumber',
  400. align: 'center',
  401. });
  402. getColumnsMaterial7.push({
  403. title : 'Estado final de equipos y sistemas entregados al cliente luego de terminar los trabajos',
  404. dataKey: 'description',
  405. align: 'left',
  406. });
  407. }else{
  408. docWorkItem7.push({
  409. xnumber : '-',
  410. description : '-'
  411. });
  412. getColumnsMaterial7.push({
  413. title : 'F',
  414. dataKey: 'xnumber',
  415. align: 'center',
  416. });
  417. getColumnsMaterial7.push({
  418. title : 'Estado final de equipos y sistemas entregados al cliente luego de terminar los trabajos',
  419. dataKey: 'description',
  420. align: 'left',
  421. });
  422. }
  423. var RepairSugerenciaorderLine = self.RepairSugerenciaorderLine;
  424. if(RepairSugerenciaorderLine.length > 0){
  425. for (var z = 0; z < RepairSugerenciaorderLine.length; z++) {
  426. docWorkItem8.push({
  427. xnumber : z+1,
  428. description : RepairSugerenciaorderLine[z].description
  429. });
  430. }
  431. getColumnsMaterial8.push({
  432. title : 'G',
  433. dataKey: 'xnumber',
  434. align: 'center',
  435. });
  436. getColumnsMaterial8.push({
  437. title : 'Sugerencias y pendientes',
  438. dataKey: 'description',
  439. align: 'left',
  440. });
  441. }else{
  442. docWorkItem8.push({
  443. xnumber : '-',
  444. description : '-'
  445. });
  446. getColumnsMaterial8.push({
  447. title : 'G',
  448. dataKey: 'xnumber',
  449. align: 'center',
  450. });
  451. getColumnsMaterial8.push({
  452. title : 'Sugerencias y pendientes',
  453. dataKey: 'description',
  454. align: 'left',
  455. });
  456. }
  457. pdfDoc.autoTable(getColumns, docItem, {
  458. theme: 'grid',
  459. styles: {
  460. overflow: 'linebreak',
  461. columnWidth: 'auto',
  462. fontSize: 7,
  463. },
  464. headerStyles: {
  465. fillColor: [255, 255, 255],
  466. borderColor: [150, 152, 154],
  467. color: 'black',
  468. fontStyle: 'bold',
  469. textColor: [0, 0, 0],
  470. fontSize: 9
  471. },
  472. columnStyles: {
  473. xnumber : {halign:'center',columnWidth: '4px'},
  474. product : {columnWidth: '8px',fontStyle: 'bold'},
  475. brand : {halign:'center', columnWidth: '8px'},
  476. number : {halign:'center',columnWidth: '8px'},
  477. },
  478. margin: { top: 60, horizontal: 12},
  479. addPageContent: function (data) {
  480. /*
  481. ====================================================================
  482. CABECERA
  483. ====================================================================
  484. */
  485. // pdfDoc.setFontSize(8);
  486. // pdfDoc.setFontStyle('bold');
  487. // pdfDoc.setTextColor(40);
  488. // pdfDoc.text(14,26,doc.company_address);
  489. //
  490. // pdfDoc.setFontSize(8);
  491. // pdfDoc.setFontStyle('bold');
  492. // pdfDoc.setTextColor(40);
  493. // pdfDoc.text(14,30,'Cel.: ' + doc.company_phone);
  494. pdfDoc.setFontSize(14);
  495. pdfDoc.setFontStyle('bold');
  496. pdfDoc.setTextColor(40);
  497. pdfDoc.text(105,10,'INFORME TÉCNICO DE TRABAJO');
  498. pdfDoc.setFontSize(12);
  499. pdfDoc.setFontStyle('normal');
  500. pdfDoc.setTextColor(40);
  501. pdfDoc.text(125,23, doc.vat);
  502. pdfDoc.setFontSize(13);
  503. pdfDoc.setFontStyle('bold');
  504. pdfDoc.setTextColor(40);
  505. pdfDoc.text(130,17,'Nº ' + doc.name);
  506. pdfDoc.setDrawColor('150', '152', '154');
  507. pdfDoc.rect(13, 25, pdfDoc.internal.pageSize.getWidth() - 26 , 26, 'S');
  508. /*
  509. ====================================================================
  510. PRIMERA SECCION
  511. ====================================================================
  512. */
  513. pdfDoc.setFontSize(10);
  514. pdfDoc.setFontStyle('bold');
  515. pdfDoc.setTextColor(40);
  516. pdfDoc.text(14,32,'Fecha: ' + moment(doc.order_date).format('DD/MM/YYYY'));
  517. pdfDoc.setFontSize(10);
  518. pdfDoc.setFontStyle('bold');
  519. pdfDoc.setTextColor(40);
  520. pdfDoc.text(47,32,'Cliente: ');
  521. pdfDoc.setFontSize(10);
  522. pdfDoc.setFontStyle('normal');
  523. pdfDoc.setTextColor(40);
  524. pdfDoc.text(61,32, doc.partner_name);
  525. pdfDoc.setFontSize(10);
  526. pdfDoc.setFontStyle('bold');
  527. pdfDoc.setTextColor(40);
  528. pdfDoc.text(149,32,'R.U.C. N°: ');
  529. pdfDoc.setFontSize(10);
  530. pdfDoc.setFontStyle('normal');
  531. pdfDoc.setTextColor(40);
  532. pdfDoc.text(168,32, doc.partner_ruc);
  533. pdfDoc.setFontSize(10);
  534. pdfDoc.setFontStyle('bold');
  535. pdfDoc.setTextColor(40);
  536. pdfDoc.text(14,37,'Presupuesto: ');
  537. pdfDoc.setFontSize(10);
  538. pdfDoc.setFontStyle('bold');
  539. pdfDoc.setTextColor(40);
  540. pdfDoc.text(49,37,'Obra: ');
  541. pdfDoc.setFontSize(9);
  542. pdfDoc.setFontStyle('normal');
  543. pdfDoc.setTextColor(40);
  544. pdfDoc.text(60,37,self.valorNull(doc.name_obra));
  545. pdfDoc.setFontSize(10);
  546. pdfDoc.setFontStyle('bold');
  547. pdfDoc.setTextColor(10);
  548. pdfDoc.text(151,37,'Inicio: ' );
  549. pdfDoc.setFontSize(10);
  550. pdfDoc.setFontStyle('normal');
  551. pdfDoc.setTextColor(40);
  552. var fecha = moment(doc.planned_start_date).subtract(4, 'hours').format('DD/MM/YYYY HH:mm');
  553. pdfDoc.text(166, 37, fecha);
  554. // pdfDoc.text(166,37, moment(doc.planned_start_date).format('DD/MM/YYYY hh:mm'));
  555. pdfDoc.setFontSize(10);
  556. pdfDoc.setFontStyle('bold');
  557. pdfDoc.setTextColor(40);
  558. pdfDoc.text(14,42,'Factura N°: ');
  559. pdfDoc.setFontSize(10);
  560. pdfDoc.setFontStyle('normal');
  561. pdfDoc.setTextColor(40);
  562. pdfDoc.text(33,42,self.valorNull(doc.nro_factura));
  563. pdfDoc.setFontSize(10);
  564. pdfDoc.setFontStyle('bold');
  565. pdfDoc.setTextColor(40);
  566. pdfDoc.text(75,42,'Pedido por: ');
  567. pdfDoc.setFontSize(10);
  568. pdfDoc.setFontStyle('normal');
  569. pdfDoc.setTextColor(40);
  570. pdfDoc.text(95,42, doc.contacto_obra);
  571. pdfDoc.setFontSize(10);
  572. pdfDoc.setFontStyle('bold');
  573. pdfDoc.setTextColor(10);
  574. pdfDoc.text(151,42,'Fin: ');
  575. pdfDoc.setFontSize(10);
  576. pdfDoc.setFontStyle('normal');
  577. pdfDoc.setTextColor(40);
  578. var end_fecha = moment(doc.planned_end_date).subtract(4, 'hours').format('DD/MM/YYYY HH:mm');
  579. pdfDoc.text(166, 42, end_fecha);
  580. pdfDoc.setFontSize(10);
  581. pdfDoc.setFontStyle('bold');
  582. pdfDoc.setTextColor(40);
  583. pdfDoc.text(14,47,'Local: ');
  584. pdfDoc.setFontSize(10);
  585. pdfDoc.setFontStyle('normal');
  586. pdfDoc.setTextColor(40);
  587. pdfDoc.text(29,47,self.valorNull(doc.name_local));
  588. pdfDoc.setFontSize(10);
  589. pdfDoc.setFontStyle('bold');
  590. pdfDoc.setTextColor(40);
  591. pdfDoc.text(75,47,'Técnico: ');
  592. pdfDoc.setFontSize(10);
  593. pdfDoc.setFontStyle('normal');
  594. pdfDoc.setTextColor(40);
  595. pdfDoc.text(90,47, doc.responsable);
  596. pdfDoc.setFontSize(10);
  597. pdfDoc.setFontStyle('bold');
  598. pdfDoc.setTextColor(10);
  599. pdfDoc.text(151,47,'Móvil: ');
  600. pdfDoc.setFontSize(10);
  601. pdfDoc.setFontStyle('normal');
  602. pdfDoc.setTextColor(40);
  603. pdfDoc.text(168,47, doc.movil);
  604. pdfDoc.setFontSize(12);
  605. pdfDoc.setFontStyle('bold');
  606. pdfDoc.setTextColor(40);
  607. pdfDoc.text(77,58,'DETALLES DE ASISTENCIA');
  608. }
  609. });
  610. /*
  611. =============================================================
  612. Problemas o sintomas encontrados
  613. =============================================================
  614. */
  615. var finalY = pdfDoc.autoTable.previous.finalY;
  616. pdfDoc.autoTable(getColumnsMaterial, docWorkItem, {
  617. theme: 'grid',
  618. startY: finalY + 3,
  619. styles: {
  620. overflow: 'linebreak',
  621. columnWidth: 'auto',
  622. fontSize: 8,
  623. },
  624. headerStyles: {
  625. fillColor: [255, 255, 255],
  626. borderColor: [150, 152, 154],
  627. fontSize: 9,
  628. textColor: [0, 0, 0]
  629. },
  630. columnStyles: {
  631. xnmumber : {columnWidth: '4px',halign: 'center'},
  632. description: {columnWidth: '8px', halign: 'left'},
  633. quantity : {columnWidth: '8px', halign: 'center'},
  634. number : {columnWidth: '8px', halign: 'center'},
  635. },
  636. margin: {horizontal: 12},
  637. });
  638. /*
  639. =============================================================
  640. Pedido adicional para servicio extra
  641. =============================================================
  642. */
  643. var finalY = pdfDoc.autoTable.previous.finalY;
  644. pdfDoc.autoTable(getColumnsMaterial1, docWorkItem1, {
  645. theme: 'grid',
  646. startY: finalY + 3,
  647. styles: {
  648. overflow: 'linebreak',
  649. columnWidth: 'auto',
  650. fontSize: 8,
  651. },
  652. headerStyles: {
  653. fillColor: [255, 255, 255],
  654. borderColor: [150, 152, 154],
  655. fontSize: 9,
  656. textColor: [0, 0, 0]
  657. },
  658. columnStyles: {
  659. xnmumber : {columnWidth: '4px',halign: 'center'},
  660. description: {columnWidth: '24px', halign: 'left'},
  661. },
  662. margin: {horizontal: 12},
  663. });
  664. /*
  665. =============================================================
  666. Lista de materiales proveidos por Bioelectric
  667. =============================================================
  668. */
  669. var finalY = pdfDoc.autoTable.previous.finalY;
  670. pdfDoc.autoTable(getColumnsMaterial5, docWorkItem5, {
  671. theme: 'grid',
  672. startY: finalY + 3,
  673. styles: {
  674. overflow: 'linebreak',
  675. columnWidth: 'auto',
  676. fontSize: 8,
  677. },
  678. headerStyles: {
  679. fillColor: [255, 255, 255],
  680. borderColor: [150, 152, 154],
  681. fontSize: 9,
  682. textColor: [0, 0, 0]
  683. },
  684. columnStyles: {
  685. xnmumber : {columnWidth: '4px',halign: 'center'},
  686. description: {columnWidth: '24px', halign: 'left'},
  687. },
  688. margin: {horizontal: 12},
  689. });
  690. /*
  691. =============================================================
  692. Ensayos y control de calidad realizados a los trabajos o equipos entregados al cliente
  693. =============================================================
  694. */
  695. var finalY = pdfDoc.autoTable.previous.finalY;
  696. pdfDoc.autoTable(getColumnsMaterial2, docWorkItem2, {
  697. theme: 'grid',
  698. startY: finalY + 3,
  699. styles: {
  700. overflow: 'linebreak',
  701. columnWidth: 'auto',
  702. fontSize: 8,
  703. },
  704. headerStyles: {
  705. fillColor: [255, 255, 255],
  706. borderColor: [150, 152, 154],
  707. fontSize: 9,
  708. textColor: [0, 0, 0]
  709. },
  710. columnStyles: {
  711. xnmumber : {columnWidth: '4px',halign: 'center'},
  712. description: {columnWidth: '24px', halign: 'left'},
  713. },
  714. margin: {horizontal: 12},
  715. });
  716. /*
  717. =============================================================
  718. Estado final de equipos y sistemas entregados al cliente luego de terminar los trabajos
  719. =============================================================
  720. */
  721. var finalY = pdfDoc.autoTable.previous.finalY;
  722. pdfDoc.autoTable(getColumnsMaterial7, docWorkItem7, {
  723. theme: 'grid',
  724. startY: finalY + 3,
  725. styles: {
  726. overflow: 'linebreak',
  727. columnWidth: 'auto',
  728. fontSize: 8,
  729. },
  730. headerStyles: {
  731. fillColor: [255, 255, 255],
  732. borderColor: [150, 152, 154],
  733. fontSize: 9,
  734. textColor: [0, 0, 0]
  735. },
  736. columnStyles: {
  737. xnmumber : {columnWidth: '4px', halign: 'center'},
  738. description: {columnWidth: '8px', halign: 'left'},
  739. quantity : {columnWidth: '8px', halign: 'center'},
  740. number : {columnWidth: '8px', halign: 'center'},
  741. },
  742. margin: {horizontal: 12},
  743. });
  744. /*
  745. =============================================================
  746. SUGERENCIAS Y PENDIENTES
  747. =============================================================
  748. */
  749. var finalY = pdfDoc.autoTable.previous.finalY;
  750. pdfDoc.autoTable(getColumnsMaterial8, docWorkItem8, {
  751. theme: 'grid',
  752. startY: finalY + 3,
  753. styles: {
  754. overflow: 'linebreak',
  755. columnWidth: 'auto',
  756. fontSize: 8,
  757. },
  758. headerStyles: {
  759. fillColor: [255, 255, 255],
  760. borderColor: [150, 152, 154],
  761. fontSize: 9,
  762. textColor: [0, 0, 0]
  763. },
  764. columnStyles: {
  765. xnmumber : {columnWidth: '4px',halign: 'center'},
  766. description: {columnWidth: '24px', halign: 'left'},
  767. },
  768. margin: {horizontal: 12},
  769. });
  770. pdfDoc.setFontSize(9);
  771. pdfDoc.setFontStyle('bold');
  772. pdfDoc.setTextColor(10);
  773. pdfDoc.text(14,pdfDoc.autoTable.previous.finalY + 5,'Mantenimiento próximo: ');
  774. pdfDoc.setFontSize(9);
  775. pdfDoc.setFontStyle('normal');
  776. pdfDoc.setTextColor(10);
  777. pdfDoc.text(60,pdfDoc.autoTable.previous.finalY + 5,self.valorNull(moment(doc.date_service).format('DD/MM/YYYY')));
  778. pdfDoc.setFontSize(9);
  779. pdfDoc.setFontStyle('bold');
  780. pdfDoc.setTextColor(10);
  781. pdfDoc.text(14,pdfDoc.autoTable.previous.finalY + 11,'Firma de conformidad de cliente o encargado: ............................................. Sello: ');
  782. pdfDoc.setFontSize(9);
  783. pdfDoc.setFontStyle('normal');
  784. pdfDoc.setTextColor(10);
  785. pdfDoc.text(14,pdfDoc.autoTable.previous.finalY + 17,'Aclaración: ................................. C.I.N°: ....................');
  786. pdfDoc.setFontSize(9);
  787. pdfDoc.setFontStyle('bold');
  788. pdfDoc.setTextColor(10);
  789. pdfDoc.text(14,pdfDoc.autoTable.previous.finalY + 23,'Firma de técnico responsable: ..................................................................... Sello: ');
  790. pdfDoc.save('Informe técnico de trabajo.pdf');
  791. },
  792. });
  793. if (instance.web && instance.web.FormView) {
  794. instance.web.FormView.include({
  795. load_form: function (record) {
  796. this._super.apply(this, arguments);
  797. if (this.model !== 'repair.workorderimproved') return;
  798. local.parentInstance = this;
  799. if (local.widgetInstance) {
  800. local.widgetInstance.updateId(record.id);
  801. }
  802. local.widgetInstance = new local.WorkOrderbioelectricWidget(this);
  803. var elemento = this.$el.find('.oe_form_sheet.oe_form_sheet_width');
  804. elemento = elemento.find('.oe_right.oe_button_box.workorderbioelectric_button_box');
  805. local.widgetInstance.appendTo(elemento);
  806. local.widgetInstance.updateId(record.id);
  807. }
  808. });
  809. }
  810. };