cancel
Showing results for 
Search instead for 
Did you mean: 

Creacion de documento preliminar SDK

Former Member
0 Kudos

Buen día,

Estoy elaborando el desarrollo de una interfaz para subir documentos preliminares, me funciona bien pero si solo es una sola forma de pago, cuando el cliente paga con efectivo y cheque cuales son los objetos o métodos a emplear?

este es mi código de ejemplo


   public String CargarDocPreliminar()//(BoClassCobranza cobranza, IEnumerable<BoClassCobranzaDetalle> detallecobranza, IEnumerable<BoClassCobranzaPago> cobranzaPago)

        {

            oCompany = new SAPbobsCOM.Company();

            Int32 lRetCode, temp, errCode;

            String strDocEntry, errMsg;

            String _mensaje = String.Empty;

            try

            {

                Conectar();

                SAPbobsCOM.Payments _borrador = oCompany.GetBusinessObject(BoObjectTypes.oPaymentsDrafts);

                _borrador.DocObjectCode = BoPaymentsObjectType.bopot_IncomingPayments;

                _borrador.DocType = BoRcptTypes.rCustomer;

                _borrador.CardCode = "9825";

                _borrador.HandWritten = SAPbobsCOM.BoYesNoEnum.tNO;

                // String _cadenaVendedor = "select SlpCode from OSLP where slpname like '" + '%' + pedido.CodigoVendedor + '%' + "'";

                // String _itemVendedor = DalClass.SeleccionarEscalar(_conexionXML, _cadenaVendedor);

                //esto se obtiene del archivo

                _borrador.DocDate = Convert.ToDateTime("13/08/2014"); // verificar si es la fecha del pago

                _borrador.DocCurrency = "BS";

                //esto se obtiene del archivo o el total de la suma de las lineas del documento.

                _borrador.CashSum = 1965.99;

                //_borrador.p 1965.99;

                

                //esto se obtiene del config.xml

                _borrador.ControlAccount = "1122002";

                //esto se obtiene del config.xml

                _borrador.CashAccount = "1111001";//7111008  _boConexion.CuentaEfectivo;

                _borrador.TaxDate = Convert.ToDateTime("13/08/2014");

                String _numeroFactura = "857233";

                String _cadenax = "Select DocEntry from OINV where docnum = '" + _numeroFactura + "'";

                String _itemx = DalClass.SeleccionarEscalar(_conexionXML, _cadenax);

                //este es el numero de factura en SAP

                _borrador.Invoices.DocEntry = Convert.ToInt32(_itemx); // 857230;

                //este es el total de la factura

                _borrador.Invoices.SumApplied = 1965.99; //10589.43;

                // se debe indicar el numero de linea de la factura

                _borrador.Invoices.DocLine = 1;

                //se agrega la linea

                _borrador.Invoices.Add();

                //int contador = 0;

                //foreach (var item in detallecobranza)

                //{

                //_borrador.Invoices.DocEntry = 14;

                //_borrador.Invoices.SumApplied = 5000.60;

                //_borrador.Invoices.DocLine = 1;

                //_borrador.Invoices.Add();

                //if (contador != 0)

                //{ _borrador.Lines.Add(); }

                //    contador++;

                //}

                Program.log.Info("Registro cardcode " + _borrador.CardCode + " DocDate: " + _borrador.DocDate + " Total: "

                    + _borrador.CashSum + " DocEntry: " + _borrador.Invoices.DocEntry);

          

                lRetCode = _borrador.Add();

                if (lRetCode != 0)

                {

                    oCompany.GetLastError(out errCode, out errMsg);

                    _mensaje = "Error de SAP: " + errMsg;

                }

                else

                {

                    oCompany.GetNewObjectCode(out strDocEntry);

                    temp = Convert.ToInt32(strDocEntry);

                    _mensaje = "Documento con cardcode " +_borrador.CardCode + " fue creado con el número de documento preliminar "+ strDocEntry.ToString();

                }

                Program.log.Info(_mensaje);

                listBoxProcesamiento.Items.Add(_mensaje);

            }

            catch (Exception ex)

            {

                _mensaje = ex.Message;

                listBoxProcesamiento.Items.Add(_mensaje);

                Program.log.Info(_mensaje);

            }

            return _mensaje;

     

        }

Saludos.

Accepted Solutions (1)

Accepted Solutions (1)

former_member413321
Contributor
0 Kudos

Hola,

      debes utilizar la propiedad Checks del objeto. Te dejo un ejemplo de su uso.

   vPay.Checks.AccounttNum = "384838"

   vPay.Checks.BankCode = "CB"

   vPay.Checks.Branch = "Branch"

   vPay.Checks.CheckNumber = 3838383

   vPay.Checks.CheckSum = 4031.2

   vPay.Checks.Currency = "Eur"

   vPay.Checks.Details = "test1"

   vPay.Checks.DueDate = CDate("31/12/2002")

   vPay.Checks.LineNum = 0

   vPay.Checks.Trnsfrable = 0

   Call vPay.Checks.Add

Espero ser de ayuda.

Former Member
0 Kudos

Hola Alejandro, gracias por tu pronta respuesta.

Si fuera una transferencia bancaria, cual objeto usaría?

former_member413321
Contributor
0 Kudos

Hola,

       para transferencia debes utilizer los campos,

  • TransferAccount = Cuenta contable.
  • TransferDate = fecha
  • TransferSum = Monto
  • TransferReference = referencia.

En en caso de tarjetas de credito el objeto se llama. CreditsCards

Former Member
0 Kudos

Muchas gracias Alejandro.

Answers (1)

Answers (1)

Former Member
0 Kudos

Hay algo que no entiendo, las facturas deben estar asociadas al pago? 

el problema es que yo recibo un lote de facturas y pagos asociados a ellas, mas no me indican que la factura 1 tiene asociado el pago 1,2,3. como hago para pasar esas facturas sin asociarlas a los pagos?

former_member413321
Contributor
0 Kudos

Hola,

    No entendi bien tu pregunta, pero para asociar el pago a las facturas utilizas la propiedad Invoice (la cual ya estas utilizando), esto hace que queden asociados, o sea el pago a la factura, Si los quieres enviar sin asociar, no llenes esta informacion.

Former Member
0 Kudos

Hola Alejandro,

Lo que pasa es que recibo las cobranzas, son 5 facturas numero

12

13

14

15

16

Pero me dicen de allí se pago con los documentos efectivo, cheque, transferencia pero no me dicen a que factura esta asociado cada pago, sino me dicen un lote de transacciones asociadas asociadas a todas.

Como hago para pasar eso es decir, a traves del objeto del SDK asociarle todos esos pagos a esas facturas, sin tener que hacerlo una a una.

Si ves mi codigo hasta donde entendi hay que darle el numero de factura, de alli buscar el docentry y asociarle pagos. Pero asi no me sirve.

former_member413321
Contributor
0 Kudos

Hola,

    El problema es que si debes saber que factura o grupo de facturas para cada recibo. Es la unica manera de asociarlas.

En tu codigo veo una function DalClase.SeleccionarEscalar, me imagino que con esta haces la consulta para traer el DocEntry, pero esta te esta retornando valores?

En el caso de un recibo que tiene multiples facturas debes realizar esas lineas de codigo de asociar la factura y el monto pagado por cada factura del mismo recibo.

Former Member
0 Kudos

ejemplo con mi problema real

Archivo de cabecera

06000260|2091502.49|20140820 000000|10326|OF0302|

Archivo de "detalle documento"

06000260|5|20020818 000000|2020668.40|0.05|0.00|0.00|0.00|0.00|DI|

06000260|860395|20020815 000000|50130.93|0.00|0.00|0.00|0.00|0.00|DI|

06000260|860396|20020815 000000|20703.11|0.00|706.41|0.00|0.00|0.00|DI|

Archivo de "detalle de pago"

06000260|6555|Deposito|50130.93|0108|

06000260|65422|Cheque|9000.00|0102|

06000260|542155|Transferencia|10996.70|0102|

06000260|665544|Cheque|1000000.00|0121|

06000260|632555|Deposito|1020668.45|0102|

Observa que no tengo relación entre el detalle de pago y detalle documento que me diga como se pago el documento "860396", es decir, no se si fue con deposito solo, o fue cheque con deposito, como hago para pasarlo todo eso con el objeto del SDK?

Saludos.

Former Member
0 Kudos

Hola Alejandro, seria en este caso un grupo de facturas, pero no se que recibos tiene asociado a el especificamente.

Former Member
0 Kudos

si mi funcion que retorna el docentry funciona perfectamente, mi problema es muchas facturas con muchos pagos pero sin sabes que esta asociado a que.

former_member413321
Contributor
0 Kudos

Hola,

     Creo que solo estas viendo las cosas un poco mal. Yo tengo un recibo con N cantidad de formas de pago y N facturas. Cada factura no interesa con que fue pagado, la forma de pago es para el recibo. Lo que interesa es saber que factura fue cancelada con el recibo.

Por lo que en ese caso tendrias algo asi (de manera resumida)

Borrador = new objeto Borrador

Borrador.Numero = 06000260

//Agrego formas de pago.

Por cada forma de pago

      Si Deposito

           Agrego forma de pago deposito

      Si transferencia

           Agrego forma de pago Transferencia

      Si Cheque

            Agrego forma de pago Cheque

      Si Tarjeta de Credito

            Agrego forma de pago tarjeta Credito

Fin Por cada forma de pago.

//Agrego documentos asociados

Por cada documento asociado

       Busco el DocEntry

       Borrador.Invoice.DocEntry = Numero

       Borrador.Invoice.SumApplied = Monto aplicado a la factura

       Borrador.Invoice.Add;  'La linea de la factura no es obligatoria.

Fin de por cada documento asociado

Borrador.Add.

De esta forma tu pago, queda asociado a las N facturas con las N formas de pago.

espero haberme explicado bien.

Former Member
0 Kudos

Gracias Alejandro,me quedo claro. Voy a probar y te aviso muchas gracias por tu tiempo. Saludos.

Former Member
0 Kudos

Una cosa para pagos por deposito bancario el objeto serian:

_borrador.BankAccount = "";

_borrador.BankChargeAmount = 0;

?

former_member413321
Contributor
0 Kudos

Hola,

      Si estas hablando de pago por transferencia, los campos que debes utilizar los mencione en un comentario anterior.

      Esos campos son referencia para otra informacion.