public DiagramProdAdvRequest transformarObjetoProduccionSalesforceDiagramacion(
      ProductionInfo elementoLista) {

    DiagramProdAdvRequest miRequest = new DiagramProdAdvRequest();
    ProposalProductionAdvertlineDTO proposal = new ProposalProductionAdvertlineDTO();

    try {

      // Clasificación
      JAXBElement<String> clasificacionJ = elementoLista.getClasification();
      if (clasificacionJ != null) {
        String clasificacion = clasificacionJ.getValue();
        proposal.setClasificacion(clasificacion);
      }

      // ID Inserción
      JAXBElement<String> idInsercionJ = elementoLista.getInsercionName();
      if (idInsercionJ != null) {
        String insercion = idInsercionJ.getValue();
        proposal.setIdInsercion(insercion);
      }

      // Código del Producto
      JAXBElement<String> cpnproductoJ = elementoLista.getProductCode();
      if (cpnproductoJ != null) {
        String cpn_producto = cpnproductoJ.getValue();
        proposal.setCodigoCpnProducto(cpn_producto);
      }

      // Código de Parte de Producto
      JAXBElement<String> cpnparteproductoJ = elementoLista.getProductPartCode();
      if (cpnparteproductoJ != null) {
        String cpn_parte_producto = cpnparteproductoJ.getValue();
        proposal.setCodigoCpnParteProducto(cpn_parte_producto);
      }

      // Referencia del Producto
      JAXBElement<String> referenciaJ = elementoLista.getReferenceCode();
      if (referenciaJ != null) {
        String referencia = referenciaJ.getValue();
        proposal.setCodReferencia(referencia);
      }

      List<AdditionalLineInfo> additionalLines = elementoLista.getAdditionalLines();
      List<web_service_diagramacion.LineaAvisoDTO> listaAvisosNew = proposal.getLineaAvisoSet();

      // Copiar las líneas respectivas.
      for (int r = 0; r < additionalLines.size(); r++) {
        AdditionalLineInfo additionalLineInfo = additionalLines.get(r);
        web_service_diagramacion.LineaAvisoDTO lineaNew =
            new web_service_diagramacion.LineaAvisoDTO();

        if (additionalLineInfo != null) {
          JAXBElement<String> consecutivoJ = additionalLineInfo.getConsecutive();
          if (consecutivoJ != null) {
            String consecutivo = consecutivoJ.getValue();

            try {
              Integer intConsecutivo = new Integer(consecutivo);
              lineaNew.setConsecutivo(intConsecutivo.intValue());
            } catch (Exception e) {
              e.printStackTrace();
            }
          }

          List<parametros_plan_salesforce.AssemblageInfo> listaMontajeOld =
              additionalLineInfo.getAssemblageList();
          List<web_service_diagramacion.MontajeDTO> listaMontajeNew = lineaNew.getMontajeSet();

          for (int s = 0; s < listaMontajeOld.size(); s++) {
            AssemblageInfo montajeOld = listaMontajeOld.get(s);
            web_service_diagramacion.MontajeDTO montajeNew =
                new web_service_diagramacion.MontajeDTO();

            // Código de la Fuente.
            JAXBElement<String> codFuenteJ = montajeOld.getFontCode();
            if (codFuenteJ != null) {
              String codFuente = codFuenteJ.getValue();
              Integer codFuenteInt = new Integer(codFuente);
              montajeNew.setCodigoFuente(codFuenteInt.intValue());
            }

            // Consecutivo del Montaje
            JAXBElement<String> consMontajeJ = montajeOld.getConsecutive();
            if (consMontajeJ != null) {
              String consMontaje = consMontajeJ.getValue();
              Integer consMontajeInt = new Integer(consMontaje);
              montajeNew.setConsMontaje(consMontajeInt.intValue());
            }

            // Interlineado
            JAXBElement<String> interlineadoJ = montajeOld.getInterline();
            if (interlineadoJ != null) {
              String interlineado = interlineadoJ.getValue();
              Integer interlineadoInt = new Integer(interlineado);
              montajeNew.setInterlineado(interlineadoInt.intValue());
            }

            // Márgen a la derecha
            JAXBElement<String> derechaJ = montajeOld.getRightMargin();
            if (derechaJ != null) {
              String derecha = derechaJ.getValue();
              Integer derechaInt = new Integer(derecha);
              montajeNew.setMargenDerecha(derechaInt);
            }

            // Márgen a la izquierda
            JAXBElement<String> izquierdaJ = montajeOld.getLeftMargin();
            if (izquierdaJ != null) {
              String izquierda = izquierdaJ.getValue();
              Integer izquierdaInt = new Integer(izquierda);
              montajeNew.setMargenIzquierda(izquierdaInt);
            }

            // Tamaño de la fuente
            JAXBElement<String> tamanoJ = montajeOld.getSize();
            if (tamanoJ != null) {
              String tamano = tamanoJ.getValue();
              Integer tamanoInt = new Integer(tamano);
              montajeNew.setTamano(tamanoInt);
            }

            // Condensación de la fuente
            JAXBElement<String> condensacionJ = montajeOld.getCondensation();
            if (condensacionJ != null) {
              String condensacion = condensacionJ.getValue();
              montajeNew.setCondensacion(condensacion);
            }

            // Justificación
            JAXBElement<String> justificacionJ = montajeOld.getJustification();
            if (justificacionJ != null) {
              String justificacion = justificacionJ.getValue();
              montajeNew.setJustificacion(justificacion);
            }

            // Texto
            JAXBElement<String> textoJ = montajeOld.getText();
            if (textoJ != null) {
              String texto = textoJ.getValue();
              montajeNew.setText(texto);
            }

            // Añadirlo a la lista de Montajes
            listaMontajeNew.add(montajeNew);
          }

          listaAvisosNew.add(lineaNew);
        }
      }
      miRequest.setAvisoProdDTO(proposal);

    } catch (Exception e) {
      e.printStackTrace();
    }

    return miRequest;
  }