Пример #1
0
        public void InvoiceIsCreatedWithDefaultValues()
        {
            var invoice = new ItemInvoice();

            Assert.IsTrue(invoice.IsTaxInclusive);
            Assert.AreEqual(DocumentAction.Print, invoice.InvoiceDeliveryStatus);
        }
Пример #2
0
        static void Main(string[] args)
        {
            string token    = "";
            string tenancy  = "tutorial";
            string user     = "******";
            string password = "******";

            Console.WriteLine("Realizando login en " + tenancy);
            token = Metodos_Seccion_Account.ApiAccount.AutentificarUsuario(tenancy, user, password);
            if (token != "")
            {
                string Opcion     = "";
                bool   Ejecutando = true;
                Console.WriteLine("Token asignado: " + token);
                Console.WriteLine("Este Token tiene una duracion de 20 min, para extenderlo utilize la funcion RefreshToken");
                Console.ReadKey();
                while (Ejecutando)
                {
                    Console.Clear();
                    Console.WriteLine("Seleccione Operacion a Realizar: ");
                    Console.WriteLine("1: Insertar Cliente Ejemplo ");
                    Console.WriteLine("2: Consultar Clientes ");
                    Console.WriteLine("3: Consultar Impuestos ");
                    Console.WriteLine("4: Consultar Servicios ");
                    Console.WriteLine("5: Crear Servicio Ejemplo ");
                    Console.WriteLine("6: Crear Factura de Contado con Cliente Registrado y servicio registrado");
                    Console.WriteLine("7: Crear Factura de Contado Sin Registrar el Cliente y sin registrar servicios");
                    Console.WriteLine("8: Crear Factura a Credito con Cliente Registrado");
                    Console.WriteLine("9: Consultar Facturas del ultimo Mes");
                    Console.WriteLine("A: Consultar Facturas Enviadas a Tribunet Hacienda");
                    Console.WriteLine("B: Reversar una factura completa (Mediante una nota de Credito)");
                    Console.WriteLine("C: Reverso Parcial de items de una factura (Mediante una nota de Credito)");
                    Console.WriteLine("S: Salir ");
                    Opcion = Console.ReadKey().KeyChar.ToString();
                    if (Opcion.ToUpper().Contains("1"))
                    {
                        Console.WriteLine("Ejecutando Cliente Ejemplo");
                        Client cliente = new Client();
                        cliente.Name               = "Pedro";
                        cliente.LastName           = "Perez";
                        cliente.IdentificationType = IdentificacionTypeTipo.Cedula_Fisica;
                        cliente.Identification     = "923456789";
                        cliente.Email              = "*****@*****.**";
                        Client clienteCreado = Metodos_Seccion_Client.ApiClient.CrearCliente(token, cliente);
                        if (cliente != null)
                        {
                            Console.WriteLine("Cliente Creado :");
                            Console.WriteLine(clienteCreado.Name + " " + clienteCreado.LastName + " " + clienteCreado.Identification);
                        }
                        Console.ReadKey();
                    }
                    if (Opcion.ToUpper().Contains("2"))
                    {
                        Console.WriteLine("Ejecutando Consultar Clientes");
                        Client[] clientes = Metodos_Seccion_Client.ApiClient.BuscarClientes(token);
                        Console.WriteLine(clientes.Length + " encontrados");
                        foreach (Client cliente in clientes)
                        {
                            Console.WriteLine(cliente.Name + " " + cliente.LastName + " " + cliente.Identification);
                        }
                        Console.ReadKey();
                    }
                    if (Opcion.ToUpper().Contains("3"))
                    {
                        Console.WriteLine("Ejecutando Consultar Impuestos");
                        Tax[] impuestos = Metodos_Seccion_Tax.ApiTax.BuscarImpuestos(token);
                        Console.WriteLine(impuestos.Length + " encontrados");
                        foreach (Tax impuesto in impuestos)
                        {
                            Console.WriteLine(impuesto.Name + " " + impuesto.Rate + " " + impuesto.TaxTypes);
                        }
                        Console.ReadKey();
                    }
                    if (Opcion.ToUpper().Contains("4"))
                    {
                        Console.WriteLine("Ejecutando Consultar Servicios");
                        Service[] servicios = Metodos_Seccion_Service.ApiService.BuscarServicios(token);
                        Console.WriteLine(servicios.Length + " encontrados");
                        foreach (Service servicio in servicios)
                        {
                            Console.WriteLine(servicio.Name + " " + servicio.Price);
                        }
                        Console.ReadKey();
                    }
                    if (Opcion.ToUpper().Contains("5"))
                    {
                        Console.WriteLine("Ejecutando Crear Servicio Ejemplo ");
                        Tax[]   impuestos = Metodos_Seccion_Tax.ApiTax.BuscarImpuestos(token);
                        Service servicio  = new Service();
                        servicio.Name            = "Eliminacion de Plagas";
                        servicio.IsRecurrent     = false;
                        servicio.Price           = 100;
                        servicio.TaxId           = impuestos.First().Id;
                        servicio.Quantity        = 1;
                        servicio.Id              = "00000000-0000-0000-0000-000000000000";
                        servicio.UnitMeasurement = UnidadMedidaType.Servicios_Profesionales;
                        Service servicioCreado = Metodos_Seccion_Service.ApiService.CrearServicio(token, servicio);
                        if (servicioCreado != null)
                        {
                            Console.WriteLine("Servicio Creado :");
                            Console.WriteLine(servicioCreado.Name + " " + servicioCreado.Price);
                        }
                        Console.ReadKey();
                    }
                    if (Opcion.ToUpper().Contains("6"))
                    {
                        Console.WriteLine("Ejecutando Crear Factura de Contado con Cliente Registrado y servicio registrado");
                        Client[]      clientes  = Metodos_Seccion_Client.ApiClient.BuscarClientes(token);
                        Tax[]         impuestos = Metodos_Seccion_Tax.ApiTax.BuscarImpuestos(token);
                        Service[]     servicios = Metodos_Seccion_Service.ApiService.BuscarServicios(token);
                        CreateInvoice factura   = new CreateInvoice();
                        // Se coloca el ID del cliente en Ticopay al que se le realizara la factura
                        factura.ClientId = clientes.First().Id;
                        // Se inicializan la lista de lineas o items de la factura
                        factura.InvoiceLines = new List <ItemInvoice>();
                        // Se crea un Item
                        ItemInvoice lineaFactura = new ItemInvoice();
                        // lineaFactura.Servicio = "Nombre del item a Facturar";
                        lineaFactura.Note         = "Nota de detalle del item a facturar";
                        lineaFactura.Cantidad     = (decimal)1.5;
                        lineaFactura.IdService    = servicios.First().Id;                                            // Se obtiene el id del servicio previamente creado
                        lineaFactura.Descuento    = 10;                                                              // % El numero en Porcentaje
                        lineaFactura.Precio       = servicios.First().Price;                                         // Se obtiene el Precio del servicio previamente creado
                        lineaFactura.Tipo         = LineType.Service;                                                // Tipo de item ( Servicio o Producto )
                        lineaFactura.UnidadMedida = servicios.First().UnitMeasurement;                               // Se obtiene la unidad de medida del servicio previamente creado
                        decimal montoLinea = Decimal.Round(lineaFactura.Cantidad * lineaFactura.Precio, 2);          // Se calcula el monto base de la linea
                        lineaFactura.TotalDescuento = Decimal.Round((montoLinea * lineaFactura.Descuento) / 100, 2); // Se calcula el descuento de la linea
                        decimal subTotal = Decimal.Round((montoLinea - lineaFactura.TotalDescuento), 2);             // Se calcula el subtotal
                        lineaFactura.IdImpuesto = (Guid)servicios.First().TaxId;                                     // Se obtiene el id del impuesto del servicio previamente creado
                        lineaFactura.Impuesto   = Decimal.Round((servicios.First().Tax.Rate *subTotal) / 100, 2);    // Se calcula el impuesto de la linea apartir de la Tasa del impuesto
                        lineaFactura.Total      = Decimal.Round(lineaFactura.Impuesto + subTotal, 2);                // Se calcula el Total de la factura
                        factura.InvoiceLines.Add(lineaFactura);                                                      // Se agrega la linea a la lista de lineas de la factura
                        // Seccion para simular descuento generales en la factura (Ya que hacienda no soporta descuentos generales , esto aplica el descuento a todas las lineas de la factura)
                        factura.DiscountGeneral     = null;
                        factura.TypeDiscountGeneral = null;
                        // Se inicializa la lista de Pagos de la factura
                        factura.ListPaymentType = new List <PaymentInvoce>();
                        // Se crea un nuevo pago
                        PaymentInvoce formaPago = new PaymentInvoce();
                        formaPago.TypePayment = 0;                  // Tipo de Pago (0 Efectivo, 1 Tarjeta de Credito o Debito, 2 Cheque, 3 Deposito o Transferencia)
                        formaPago.Balance     = lineaFactura.Total; // Total pagado de esta forma
                        formaPago.Trans       = null;               // Numero de referencia, en caso de cheque , Tarjeta, Deposito o transferencia
                        factura.ListPaymentType.Add(formaPago);     // Se agrega la forma de pago a la factura
                        // Se coloca el tipo de moneda de la factura
                        factura.CodigoMoneda = CodigoMoneda.CRC;
                        // Se envia la factura al Api
                        Invoice facturaCreada = Metodos_Seccion_Invoice.ApiInvoice.CrearFactura(token, factura);
                        if (factura != null)
                        {
                            Console.WriteLine("Factura Creada :");
                            // El Api retorna la factura Creada en Ticopay
                            Console.WriteLine(facturaCreada.Status + " " + facturaCreada.Client.Name);
                        }
                        Console.ReadKey();
                    }
                    if (Opcion.ToUpper().Contains("7"))
                    {
                        Console.WriteLine("Crear Factura de Contado Sin Registrar el Cliente y sin registrar servicios");
                        Client[]      clientes  = Metodos_Seccion_Client.ApiClient.BuscarClientes(token);
                        Tax[]         impuestos = Metodos_Seccion_Tax.ApiTax.BuscarImpuestos(token);
                        Service[]     servicios = Metodos_Seccion_Service.ApiService.BuscarServicios(token);
                        CreateInvoice factura   = new CreateInvoice();
                        // Como no se creara un cliente se coloca el ID del cliente en null
                        factura.ClientId = null;
                        // Se rellenan los datos del cliente directo en la factura
                        factura.ClientIdentificationType = IdentificacionTypeTipo.Cedula_Fisica;
                        factura.ClientIdentification     = "123456789";
                        factura.ClientName  = "Pedro Perez";
                        factura.ClientEmail = "*****@*****.**";
                        // El resto de los campos del cliente (ClientMobilNumber y ClientPhoneNumber, ) son opcionales para la facturacion electronica
                        // Se inicializan la lista de lineas o items de la factura
                        factura.InvoiceLines = new List <ItemInvoice>();
                        // Se crea un Item
                        ItemInvoice lineaFactura = new ItemInvoice();
                        // lineaFactura.Servicio = "Nombre del item a Facturar";
                        lineaFactura.Note         = "Nota de detalle del item a facturar";
                        lineaFactura.Servicio     = "Nombre del item";                                               // Al no usar un servicio o producto del sistema debemos rellenar el nombre del item a facturar
                        lineaFactura.Cantidad     = (decimal)1.5;
                        lineaFactura.IdService    = null;                                                            // como facturaremos un item sin registrarlo previamente se coloca en null
                        lineaFactura.Descuento    = 10;                                                              // % El numero en Porcentaje
                        lineaFactura.Precio       = 110;                                                             // Se coloca el precio del producto
                        lineaFactura.Tipo         = LineType.Service;                                                // Tipo de item ( Servicio o Producto )
                        lineaFactura.UnidadMedida = UnidadMedidaType.Servicios_Profesionales;                        // Se coloca la unidad de medida del item
                        decimal montoLinea = Decimal.Round(lineaFactura.Cantidad * lineaFactura.Precio, 2);          // Se calcula el monto base de la linea
                        lineaFactura.TotalDescuento = Decimal.Round((montoLinea * lineaFactura.Descuento) / 100, 2); // Se calcula el descuento de la linea
                        decimal subTotal = Decimal.Round((montoLinea - lineaFactura.TotalDescuento), 2);             // Se calcula el subtotal
                        lineaFactura.IdImpuesto = impuestos.First().Id;                                              // Se obtiene el id del impuesto de uno de los impuestos previamente creados
                        lineaFactura.Impuesto   = Decimal.Round((impuestos.First().Rate *subTotal) / 100, 2);        // Se calcula el impuesto de la linea apartir de la Tasa del impuesto
                        lineaFactura.Total      = Decimal.Round(lineaFactura.Impuesto + subTotal, 2);                // Se calcula el Total de la factura
                        factura.InvoiceLines.Add(lineaFactura);                                                      // Se agrega la linea a la lista de lineas de la factura
                        // Seccion para simular descuento generales en la factura (Ya que hacienda no soporta descuentos generales , esto aplica el descuento a todas las lineas de la factura)
                        factura.DiscountGeneral     = null;
                        factura.TypeDiscountGeneral = null;
                        // Se inicializa la lista de Pagos de la factura
                        factura.ListPaymentType = new List <PaymentInvoce>();
                        // Se crea un nuevo pago
                        PaymentInvoce formaPago = new PaymentInvoce();
                        formaPago.TypePayment = 0;                  // Tipo de Pago (0 Efectivo, 1 Tarjeta de Credito o Debito, 2 Cheque, 3 Deposito o Transferencia)
                        formaPago.Balance     = lineaFactura.Total; // Total pagado de esta forma
                        formaPago.Trans       = null;               // Numero de referencia, en caso de cheque , Tarjeta, Deposito o transferencia
                        factura.ListPaymentType.Add(formaPago);     // Se agrega la forma de pago a la factura
                        // Se coloca el tipo de moneda de la factura
                        factura.CodigoMoneda = CodigoMoneda.CRC;
                        // Se envia la factura al Api
                        Invoice facturaCreada = Metodos_Seccion_Invoice.ApiInvoice.CrearFactura(token, factura);
                        if (facturaCreada != null)
                        {
                            Console.WriteLine("Factura Creada :");
                            // El Api retorna la factura Creada en Ticopay
                            Console.WriteLine(facturaCreada.Status + " " + facturaCreada.ClientName);
                        }
                        Console.ReadKey();
                    }
                    if (Opcion.ToUpper().Contains("8"))
                    {
                        Console.WriteLine("Ejecutando Crear Factura a Credito con Cliente Registrado");
                        Client[]      clientes  = Metodos_Seccion_Client.ApiClient.BuscarClientes(token);
                        Tax[]         impuestos = Metodos_Seccion_Tax.ApiTax.BuscarImpuestos(token);
                        Service[]     servicios = Metodos_Seccion_Service.ApiService.BuscarServicios(token);
                        CreateInvoice factura   = new CreateInvoice();
                        // Se coloca el ID del cliente en Ticopay al que se le realizara la factura
                        factura.ClientId = clientes.First().Id;
                        // Se inicializan la lista de lineas o items de la factura
                        factura.InvoiceLines = new List <ItemInvoice>();
                        // Se crea un Item
                        ItemInvoice lineaFactura = new ItemInvoice();
                        // lineaFactura.Servicio = "Nombre del item a Facturar";
                        lineaFactura.Note         = "Nota de detalle del item a facturar";
                        lineaFactura.Cantidad     = (decimal)1.5;
                        lineaFactura.IdService    = servicios.First().Id;                                            // Se obtiene el id del servicio previamente creado
                        lineaFactura.Descuento    = 10;                                                              // % El numero en Porcentaje
                        lineaFactura.Precio       = servicios.First().Price;                                         // Se obtiene el Precio del servicio previamente creado
                        lineaFactura.Tipo         = LineType.Service;                                                // Tipo de item ( Servicio o Producto )
                        lineaFactura.UnidadMedida = servicios.First().UnitMeasurement;                               // Se obtiene la unidad de medida del servicio previamente creado
                        decimal montoLinea = Decimal.Round(lineaFactura.Cantidad * lineaFactura.Precio, 2);          // Se calcula el monto base de la linea
                        lineaFactura.TotalDescuento = Decimal.Round((montoLinea * lineaFactura.Descuento) / 100, 2); // Se calcula el descuento de la linea
                        decimal subTotal = Decimal.Round((montoLinea - lineaFactura.TotalDescuento), 2);             // Se calcula el subtotal
                        lineaFactura.IdImpuesto = (Guid)servicios.First().TaxId;                                     // Se obtiene el id del impuesto del servicio previamente creado
                        lineaFactura.Impuesto   = Decimal.Round((servicios.First().Tax.Rate *subTotal) / 100, 2);    // Se calcula el impuesto de la linea apartir de la Tasa del impuesto
                        lineaFactura.Total      = Decimal.Round(lineaFactura.Impuesto + subTotal, 2);                // Se calcula el Total de la factura
                        factura.InvoiceLines.Add(lineaFactura);                                                      // Se agrega la linea a la lista de lineas de la factura
                        // Seccion para simular descuento generales en la factura (Ya que hacienda no soporta descuentos generales , esto aplica el descuento a todas las lineas de la factura)
                        factura.DiscountGeneral     = null;
                        factura.TypeDiscountGeneral = null;
                        // Debido a que la factura sera a credito , se deja el campo de pagos en null
                        factura.ListPaymentType = null;
                        // Se debe colocar obligatoriamente la cantidad de dias de credito para la factura
                        factura.CreditTerm = 5;
                        // Se coloca el tipo de moneda de la factura
                        factura.CodigoMoneda = CodigoMoneda.CRC;
                        // Se envia la factura al Api
                        Invoice facturaCreada = Metodos_Seccion_Invoice.ApiInvoice.CrearFactura(token, factura);
                        if (factura != null)
                        {
                            Console.WriteLine("Factura Creada :");
                            // El Api retorna la factura Creada en Ticopay
                            Console.WriteLine(facturaCreada.Status + " " + facturaCreada.Client.Name);
                        }
                        Console.ReadKey();
                    }
                    if (Opcion.ToUpper().Contains("9"))
                    {
                        Console.WriteLine("Ejecutando Consultar Facturas del ultimo Mes");
                        Invoice[] facturas = Metodos_Seccion_Invoice.ApiInvoice.BuscarFacturas(token);
                        Console.WriteLine(facturas.Length + " encontrados");
                        foreach (Invoice factura in facturas)
                        {
                            Console.WriteLine(factura.ConsecutiveNumber + " " + factura.Balance + " " + factura.Status);
                        }
                        Console.ReadKey();
                    }
                    if (Opcion.ToUpper().Contains("A"))
                    {
                        Console.WriteLine("Ejecutando Consultar Facturas Enviadas a Tribunet");
                        InvoiceSendTribunet[] reporte = Metodos_Seccion_Invoice.ApiInvoice.ReporteEstatusFacturasTribunet(token);
                        Console.WriteLine(reporte.Length + " encontrados");
                        foreach (InvoiceSendTribunet factura in reporte)
                        {
                            Console.WriteLine(factura.NombreCliente + " " + factura.NumeroFactura + " " + factura.StatusTribunet);
                        }
                        Console.ReadKey();
                    }
                    if (Opcion.ToUpper().Contains("B"))
                    {
                        Console.WriteLine("Ejecutando Reversar una factura completa (Mediante una nota de Credito)");
                        Invoice[]    facturas = Metodos_Seccion_Invoice.ApiInvoice.BuscarFacturas(token);
                        CompleteNote nota     = Metodos_Seccion_Invoice.ApiNotes.ReversarFacturaOTiquete(token, facturas.First().Id, "N/A");
                        if (nota != null)
                        {
                            Console.WriteLine("Factura Reversada :");
                            // El Api retorna la nota de credito Creada en Ticopay
                            Console.WriteLine(nota.Status + " " + nota.ConsecutiveNumber);
                        }
                        Console.ReadKey();
                    }
                    if (Opcion.ToUpper().Contains("C"))
                    {
                        Console.WriteLine("Ejecutando Reversar una factura completa (Mediante una nota de Credito)");
                        Invoice[] facturas = Metodos_Seccion_Invoice.ApiInvoice.BuscarFacturas(token);
                        Invoice   facturaAReversarParcialmente = facturas.Where(f => f.InvoiceLines.Count >= 2).FirstOrDefault();
                        // Creamos una nueva nota de credito
                        CompleteNote notaACrear = new CompleteNote();
                        // Identificamos a que factura o tiquete se le esta aplicando la nota
                        notaACrear.InvoiceId               = Guid.Parse(facturaAReversarParcialmente.Id);
                        notaACrear.NumberInvoiceRef        = facturaAReversarParcialmente.ConsecutiveNumber;
                        notaACrear.ExternalReferenceNumber = "N/A";                                      // Numero de referencia externo usando por su sistema
                        // Rellenamos los datos principales de la nota (Basados en la factura que vamos a reversar)
                        notaACrear.CodigoMoneda             = facturaAReversarParcialmente.CodigoMoneda; // Moneda de la nota
                        notaACrear.NoteType                 = NoteType.Crédito;                          // Tipo de nota
                        notaACrear.NoteReasons              = NoteReason.Corregir_Monto_Factura;         // Motivo de la nota
                        notaACrear.TipoFirma                = facturaAReversarParcialmente.TipoFirma;    // Tipo de firma
                        notaACrear.IsNoteReceptionConfirmed = false;
                        notaACrear.NoteReasonsOthers        = null;
                        notaACrear.DueDate           = DateTime.UtcNow;
                        notaACrear.Status            = Status.Completed;
                        notaACrear.ConditionSaleType = TicoPayDll.Notes.FacturaElectronicaCondicionVenta.Otros;
                        notaACrear.CreditTerm        = 0;
                        // Inicializamos el objeto para las lineas de la nota
                        notaACrear.NotesLines = new List <NoteLineDto>();
                        NoteLineDto lineaNotaDetalle = new NoteLineDto();
                        int         numeroLinea      = 1;
                        // Para el ejemplo solo tomamos la primera linea de la factura para realizar la devolucion
                        lineaNotaDetalle.PricePerUnit = facturaAReversarParcialmente.InvoiceLines[0].PricePerUnit; // Precio del item
                        lineaNotaDetalle.SubTotal     = facturaAReversarParcialmente.InvoiceLines[0].SubTotal;     // Sub total del item
                        lineaNotaDetalle.LineTotal    = facturaAReversarParcialmente.InvoiceLines[0].LineTotal;    // Sub total de linea
                        lineaNotaDetalle.TaxId        = facturaAReversarParcialmente.InvoiceLines[0].TaxId;        // Id del impuesto de la linea
                        lineaNotaDetalle.TaxAmount    = facturaAReversarParcialmente.InvoiceLines[0].TaxAmount;    // Monto del impuesto de la linea
                        lineaNotaDetalle.Total        = facturaAReversarParcialmente.InvoiceLines[0].Total;        // Total de la linea
                        lineaNotaDetalle.Note         = facturaAReversarParcialmente.InvoiceLines[0].Note;         // nota descriptiva de la linea
                        lineaNotaDetalle.Title        = facturaAReversarParcialmente.InvoiceLines[0].Title;        // Nombre del item de la linea
                        lineaNotaDetalle.Quantity     = facturaAReversarParcialmente.InvoiceLines[0].Quantity;     // Cantidad de items de la linea
                        lineaNotaDetalle.LineType     = facturaAReversarParcialmente.InvoiceLines[0].LineType;     // Tipo de linea
                        // Si la linea esta basada en un producto o servicio registrado se guarda el id del mismo
                        if (facturaAReversarParcialmente.InvoiceLines[0].ProductId != null)
                        {
                            lineaNotaDetalle.ProductId = facturaAReversarParcialmente.InvoiceLines[0].ProductId;
                        }
                        if (facturaAReversarParcialmente.InvoiceLines[0].ServiceId != null)
                        {
                            lineaNotaDetalle.ServiceId = facturaAReversarParcialmente.InvoiceLines[0].ServiceId;
                        }
                        lineaNotaDetalle.LineNumber          = numeroLinea; // Numero de linea
                        lineaNotaDetalle.DescriptionDiscount = null;
                        lineaNotaDetalle.ExonerationId       = null;
                        lineaNotaDetalle.UnitMeasurement     = facturaAReversarParcialmente.InvoiceLines[0].UnitMeasurement; // Unidad de medida de la linea
                        if (facturaAReversarParcialmente.InvoiceLines[0].UnitMeasurementOthers != null)
                        {
                            lineaNotaDetalle.UnitMeasurementOthers = facturaAReversarParcialmente.InvoiceLines[0].UnitMeasurementOthers;
                        }
                        else
                        {
                            lineaNotaDetalle.UnitMeasurementOthers = null;
                        }
                        // Calculamos los totales de la nota
                        notaACrear.Amount         = lineaNotaDetalle.SubTotal;
                        notaACrear.TaxAmount      = lineaNotaDetalle.TaxAmount;
                        notaACrear.DiscountAmount = 0;
                        notaACrear.Total          = lineaNotaDetalle.Total;
                        notaACrear.NotesLines.Add(lineaNotaDetalle);
                        CompleteNote notaCreada = Metodos_Seccion_Invoice.ApiNotes.CrearNote(token, notaACrear);
                        if (notaCreada != null)
                        {
                            Console.WriteLine("Nota Parcial Creada :");
                            Console.WriteLine(notaCreada.Status + " " + notaCreada.ConsecutiveNumber);
                        }
                        Console.WriteLine("");
                        Console.ReadKey();
                    }
                    if (Opcion.ToUpper().Contains("S"))
                    {
                        Ejecutando = false;
                    }
                }
                Console.WriteLine("Hasta luego ");
                Console.ReadKey();
            }
            else
            {
                Console.WriteLine("Error al Conectar con Ticopay");
                Console.ReadKey();
            }
        }
Пример #3
0
 public ItemModel()
 {
     Invoice = new ItemInvoice();
 }
Пример #4
0
 protected virtual void ProcessItem(ItemInvoice item)
 {
 }
Пример #5
0
        public string PostSaleInvoice(PelicanSale sale,
                                      PelicanContext context = null,
                                      Guid?companyFileId     = null)
        {
            var authorizationService = new AuthorizationService();

            context       = context ?? PelicanContext.CreateFromApplicationSettings();
            companyFileId = companyFileId ?? context.CompanyFileId;

            var apiContext = authorizationService.GetAuthorizedContext(context,
                                                                       companyFileId.Value);

            try
            {
                if (_taxCode == null)
                {
                    var taxCodeService = new TaxCodeService(apiContext.ApiConfiguration);
                    var taxCodes       = taxCodeService.GetRange(apiContext.CompanyFile,
                                                                 null,
                                                                 apiContext.CompanyFileCredentials);
                    _taxCode = taxCodes.Items.First(_ => _.Code == "GST");
                }

                var service = new ItemInvoiceService(apiContext.ApiConfiguration);
                var entity  = new ItemInvoice();
                entity.UID         = Guid.NewGuid();
                entity.InvoiceType = InvoiceLayoutType.Item;
                entity.Customer    = new CustomerLink
                {
                    UID = Guid.Parse(sale.Customer.Id)
                };
                entity.Number = string.Format("SJ{0:D5}",
                                              _referenceNbr++);
                entity.Date = DateTime.Today;
                var invoiceLines = new List <ItemInvoiceLine>();
                for (var index = 0;
                     index < sale.SaleableItems.Count();
                     index++)
                {
                    var saleableItem = sale.SaleableItems[index];
                    var item         = new ItemInvoiceLine();
                    item.Item = new ItemLink
                    {
                        UID = Guid.Parse(saleableItem.Id)
                    };
                    item.RowID        = index;
                    item.ShipQuantity = 1;
                    item.Total        = Convert.ToDecimal(saleableItem.Price);
                    item.TaxCode      = new TaxCodeLink
                    {
                        UID = _taxCode.UID
                    };
                    invoiceLines.Add(item);
                }
                entity.Lines       = invoiceLines;
                entity.TotalAmount = Convert.ToDecimal(sale.SaleableItems.Sum(_ => _.Price));
                entity.Comment     = "Entered via Pelican";
                return(service.Insert(apiContext.CompanyFile,
                                      entity,
                                      apiContext.CompanyFileCredentials));
            }
            catch (Exception ex)
            {
                switch (ex.GetType()
                        .Name)
                {
                case "WebException":
                    Debug.WriteLine(FormatMessage((WebException)ex));
                    break;

                case "ApiCommunicationException":
                    Debug.WriteLine(FormatMessage((WebException)ex.InnerException));
                    break;

                case "ApiOperationException":
                    Debug.WriteLine(ex.Message);
                    break;

                default:
                    Debug.WriteLine(ex.Message);
                    break;
                }
            }
            return(null);
        }