cancel
Showing results for 
Search instead for 
Did you mean: 

Entrada de Mercancias OP basada en Orden de Compra Vía SDK

Former Member
0 Kudos

Que tal buenos dias a todos,

El presente para solicitar su apoyo sobre una duda que tenemos en cuanto al SDK.

En especifico lo que deseamos realizar es mediante el SDK ingresar una entrada de mercancias OP basada en una Orden de Compra, pero no encontramos la propiedad en el SDK para hacer referencia a la Orden de Compra.

Anexo el ejemplo que estamos realizando.

De antemano les agradezco el apoyo y su tiempo.

iDisp := oCompany.GetBusinessObject(oPurchaseDeliveryNotes);

iDisp.QueryInterface(IID_IDocuments, vEntradas);

vEntradas.CardCode := 'P00001';

vEntradas.NumAtCard := 'GO11000280';

vEntradas.Series := DM.B1Series.FieldByName('Series').AsInteger;

vEntradas.SeriesString := 'GO';

vEntradas.DocDate := EncodeDate(2011,08,31);

vEntradas.Lines.WarehouseCode := '020';

vEntradas.Lines.ItemCode := '53212013';

vEntradas.Lines.Quantity := 1;

vEntradas.Lines.PriceAfterVAT := 11.6;

vEntradas.Lines.BaseEntry := 17;

vEntradas.Lines.BaseType := 22;

vEntradas.Lines.BaseEntry := 83;

vEntradas.Lines.BaseLine := 1;

vEntradas.Lines.Add;

vEntradas.Lines.WarehouseCode := '020';

vEntradas.Lines.ItemCode := '10000151';

vEntradas.Lines.Quantity := 2;

vEntradas.Lines.PriceAfterVAT := 1.16;

vEntradas.Lines.BaseEntry := 17;

vEntradas.Lines.BaseType := 22;

vEntradas.Lines.BaseEntry := 83;

vEntradas.Lines.BaseLine := 2;

RetVal := vEntradas.Add;

If RetVal <> 0 Then

begin

oCompany.GetLastError(ErrCode, ErrMsg);

MessageDlg('Error Code: 'IntToStr(ErrCode)#13#10'Error Msg: '+ErrMsg, mtWarning, [mbOK], 0);

End;

Saludos Cordiales...

Accepted Solutions (0)

Answers (2)

Answers (2)

felipe_loyolarodriguez
Active Contributor
0 Kudos

La referencia a la OC ya la estas haciendo, quiza te preguntas porque la OC no se cierra?

Si es asi revisa este post

Saludos

former_member188440
Active Contributor
0 Kudos

Necesitas BaseEntry para indicarle el docentry de la Orden de compra que cerraras, y la de baseline, para indicarle que linea de la OC estas recibiendo

AMbas son public

Former Member
0 Kudos

Que tal Mauricio gracias por tu respuesta.

Pero te comento que en el ejemplo que postee si hago referencia al BaseEntry = 83 donde el 83 es mi Orden de Compra

y el BaseLine es a la fila 1

iDisp := oCompany.GetBusinessObject(oPurchaseDeliveryNotes);

iDisp.QueryInterface(IID_IDocuments, vEntradas);

vEntradas.CardCode := 'P00001';

vEntradas.NumAtCard := 'GO11000280';

vEntradas.Series := DM.B1Series.FieldByName('Series').AsInteger;

vEntradas.SeriesString := 'GO';

vEntradas.DocDate := EncodeDate(2011,08,31);

vEntradas.Lines.WarehouseCode := '020';

vEntradas.Lines.ItemCode := '53212013';

vEntradas.Lines.Quantity := 1;

vEntradas.Lines.PriceAfterVAT := 11.6;

vEntradas.Lines.BaseType := 22;

vEntradas.Lines.BaseEntry := 83;

vEntradas.Lines.BaseLine := 1;

vEntradas.Lines.Add;

Nuevamente te doy las gracias y espero me puedas comentar que otra funcion me falta.

former_member188440
Active Contributor
0 Kudos

Recuerda que el linenum y el baseline comienzan en 0, de tal forma que si en tu ventana ves la linea 1 y esa quieres cerrar, debes poner la linea 0 como primer baseline

Former Member
0 Kudos

Gracias Mauricio.

Te comento que ya que pudimos realizar la entrada con tu apoyo.

Saludos Cordiales...

Former Member
0 Kudos

Hola Mauricio

Molestandote de nuevo podrias ayudarme con la siguiente pregunta:

Este es el Escenario

Tengo una Orden de Compra del Articulo A001 con la cantidad de 10 piezas

Posteriormente hice una entreda de Mercancia con refencia a esa OC por el mismo articulo A001 con la cantidad de 10 piezas

Pero deseo hacer una devolucion del articulo A001 por la cantidad de 5 pieza.

Podrias ayudarme diciendome en que campo debe indicarle que me vuelva abrir la OC por esos 5 que devolvieron

Este es el codigo que estamos manejando

vDevolucionE.CardCode := 'P00001';

vDevolucionE.NumAtCard := 'GO11000325';

vDevolucionE.Series := DM.B1Series.FieldByName('Series').AsInteger;

vDevolucionE.SeriesString := 'GO';

vDevolucionE.DocDate := EncodeDate(2011,09,02);

vDevolucionE.Lines.WarehouseCode := '020';

vDevolucionE.Lines.ItemCode := '53212013';

vDevolucionE.Lines.Quantity := 2;

vDevolucionE.Lines.PriceAfterVAT := 11.6;

vDevolucionE.Lines.BaseType := 20;

vDevolucionE.Lines.BaseEntry := 9;

vDevolucionE.Lines.BaseLine := 0;

vDevolucionE.Lines.Add;

vDevolucionE.Lines.WarehouseCode := '020';

vDevolucionE.Lines.ItemCode := '10000151';

vDevolucionE.Lines.Quantity := 4;

vDevolucionE.Lines.PriceAfterVAT := 1.16;

vDevolucionE.Lines.BaseType := 20;

vDevolucionE.Lines.BaseEntry := 9;

vDevolucionE.Lines.BaseLine := 1;

RetVal := vDevolucionE.Add;

De antemano gracias

former_member188440
Active Contributor
0 Kudos

Hola, te cuento que por funcionalidad, una vez que se ha cerrado la orden de compra pues le diste entrada a las 10 piezas, NO es posible volver a abrirla.

Esto ocurrio de manera automatica

El proceso correcto seria, hacer en base a la entrada por OP, una devolucion de esos 5 que necesitas y despues volver a hacer la OC de esos 5 articulos para inciar el proceso de nuevo.

Saludos

Former Member
0 Kudos

Hola Mauricio gracias por contestar.

Estoy de acuerdo contigo en que por funcionalidad no es posible abrir la OC cuando se cerro de forma automatica, pero esto sucedida en las versiones anteriores a 8.81.

Apartir de la versión 8.81 ya existe una funcionalidad en parametrizacion de documentos, en la cual le puedes indicar a SBO que se abra la OC cuando se realize una devolucion.

Es por eso que te comentaba si sabes de algun objeto en esta nueva version con el cual se pueda realizar ese movimiento.

O cuando comentas que por funcionalidad no se puede, te refieres a la funcionalidad del SDK.

De antemano gracias por el apoyo.

Saludos cordiales...