Error al crear una factura de clientes con el sdk

Buenas tardes,

Amigos necesito su ayuda, tengo una aplicación en C# que guarda factura de clientes en SAP mediante xml (la aplicación se ejecuta normal con el SDK), pero cuando quiero grabar un documento de venta con algunos artículos me salta este error:

“No es posible añadir una linea sin la selección completa de los números de serie/lote”.

esos articulos tienen configurados series y lotes, pero no consigo que agregar a mi xml para que cree la factura.

He probado con otros, y la venta se ejecuta.

adjunto mi xml.

Saludos.

1 me gusta

Buenas tardes compañeor, la verdad desconozco un poco la programacion mediante el XML, pero te dejo un codigo de BASIC que agrega los numeors de lote.
Este codigo yo lo genere y me funciona a la perfeccion.

vInvoice.Lines.BatchNumbers.BatchNumber = Lote(t).IdAlmacen     'ID Almacen
vInvoice.Lines.BatchNumbers.Quantity = Lote(t).Cantidad         'Cantidad
vInvoice.Lines.BatchNumbers.Add()

El objeto vInvoice es un objeto del SDK SAPbobsCOM.BoObjectTypes.oInvoices (Factura Clientes), dentro de este objeto en las lineas se encuentra la propiedad Lines y dentro de la propiedad Lines esta “BatchNumbers” que crea los numeros de lote.
Desconozco como lo tendiras que ejectuar en XML pero al menos ya sabes que si se puede y donde estan las propiedades
Espero te sirva.

Buenas @jesusdja,

Lo que te está pasando es que cuando haces una venta, haces una salida de inventario, y unos artículos en concreto maneja lotes. Por lo que hay que indicarle de que lote vas a hacer la salida del inventario, pero, si necesitas utilizar mas de un lote, tendrás que indicarle cuales de esos lotes deseas utilizar.

Tienes la opción de autoselección, pero deberías de cambiar el código del programa.

Un saludo

Excelente esto me funciona.

Pero para indicarle el numero de serie?

Otra pregunta,

y en la base de datos como consigues los numeros de series disponibles?

dentro del xml utilizaria:
Untitled2

pero no se donde indico el numero de serie

Seria en cualquier de estas partes de “Serial number”

imagen

la tabla donde estan los numeros de serie es la tabla OSRI

1 me gusta

Muchas gracias por la ayuda,

otra duda y disculpa la molestia.

Y cuando quiero crear una factura con varios productos con numero de serie/lote

No te preocupes, para es esto la comunidad.
Pues simplemente aplicaria una iteracion sobre este mismo codigo.
Como te comento, en XML no se bien con exactitud las sentencias o la logica (No conozco XML), pero en BASIC un ejemplo seria de la siguente manera.

For i=0 to 5
vInvoice.Lines.itemCode=CodigoItem
vInvoice.Lines.Quantity=2
vInvoice.Lines.Price =12.43
If i < 5 then vInvoice.Lines.Add()         'Esta sentencia agrega una nueva linea al objeto Invoice de SAP

vInvoice.Lines.BatchNumbers.BatchNumber = Lote(t).IdAlmacen 'ID Almacen
vInvoice.Lines.BatchNumbers.Quantity = Lote(t).Cantidad 'Cantidad
vInvoice.Lines.BatchNumbers.Add()
Next
1 me gusta

Gracias por tu ayuda los campos si son los correctos para insertarlos en el XML pero para insertar varios tiene que ser en una sola corrida ya que el XML me lo suministran.

De todas maneras gracias por tu apoyo.

Adjunto XML para un solo articulo.

<?xml version="1.0" encoding="UTF-8"?>
<BOM xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <BO>
    <AdmInfo>
      <Object>13</Object>
      <Version>2</Version>
    </AdmInfo>
    <Documents>
      <row>
        <DocDate>20171002</DocDate>
        <CardCode>24</CardCode>
        <Comments>Pedido 00017-002-0005</Comments>
        <DiscountPercent>0</DiscountPercent>
      </row>
    </Documents>
    <Document_Lines>
      <row>
        <ItemCode>A00006</ItemCode>
        <Quantity>1.000</Quantity>
        <DiscountPercent>0.0</DiscountPercent>
        <TaxCode>IVA</TaxCode>
      </row>
      <row>
        <ItemCode>A00006</ItemCode>
        <Quantity>1.000</Quantity>
        <DiscountPercent>0.0</DiscountPercent>
        <TaxCode>IVA</TaxCode>
      </row>
    </Document_Lines>
	<SerialNumbers>
      <row>
        <InternalSerialNumber>A6-000294</InternalSerialNumber>
      </row>
      <row>
        <InternalSerialNumber>A6-000295</InternalSerialNumber>      
      </row>
    </SerialNumbers>
  </BO>
</BOM>
1 me gusta

Hola @jesusdja veo que solo has copiado capturas de pantalla, siendo estos códigos, te pido que por favor edites los mensajes cambiando las imagenes por el código XML

En el foro hay un botón para colorear el código
image

Ayudemos a mantener los recursos del foro :+1:

Saludos (:

3 Me gusta

Buenas @jesusdja,

Si te quieres ahorrar dolores de cabeza, yo haría mediante código una consulta de todos los lotes con stock de ese producto del mas antiguo al mas nuevo. Y luego haría un bucle del cual fuera restando las unidades de lote con las unidades vendidas.

Un saludo

1 me gusta

Una pregunta el BatchNumber es para el numero de lote y para el numero de serie??

Para el número de serie es: SerialNumber.

Un saludo! :v:t3:

Gracias por la respuesta.

Una pregunta tendras alguna idea de como cargar varios productos con series y lotes por xml?

aca el codigo de un solo producto:

<?xml version="1.0" encoding="UTF-8"?>
<BOM xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <BO>
    <AdmInfo>
      <Object>13</Object>
      <Version>2</Version>
    </AdmInfo>
    <QueryParams/>
    <Documents>
      <row>
        <DocDate>20171005</DocDate>
        <CardCode>C60000</CardCode>
        <Comments> factura con serial 2</Comments>
        <DiscountPercent>2</DiscountPercent>
        <PaymentMethod>INC_Transfer</PaymentMethod>            
      </row>
    </Documents>
    <Document_ApprovalRequests/>
    <Document_Lines>
      <row>
        <ItemCode>A00006</ItemCode>
        <Quantity>1.000</Quantity>
        <DiscountPercent>10</DiscountPercent>
      </row>
    </Document_Lines>
    <SerialNumbers>
      <row>
        <InternalSerialNumber>A6-000299</InternalSerialNumber>
      </row>
    </SerialNumbers>
  </BO>
</BOM>

La verdad con XML no Jesus, nunca he trabajado. Todos los desarrollos los he hecho en asp.net o en C#, pero en ese lenguaje no tengo forma de ayudarte, una disculpa.

1 me gusta

Este tema se cerró automáticamente 7 días después del último post. No se permiten nuevas respuestas.