RetailSolutions.Shared.Microservices.Gemco.PedidoVenda 1.0.47

There is a newer version of this package available.
See the version list below for details.
dotnet add package RetailSolutions.Shared.Microservices.Gemco.PedidoVenda --version 1.0.47
                    
NuGet\Install-Package RetailSolutions.Shared.Microservices.Gemco.PedidoVenda -Version 1.0.47
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="RetailSolutions.Shared.Microservices.Gemco.PedidoVenda" Version="1.0.47" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="RetailSolutions.Shared.Microservices.Gemco.PedidoVenda" Version="1.0.47" />
                    
Directory.Packages.props
<PackageReference Include="RetailSolutions.Shared.Microservices.Gemco.PedidoVenda" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add RetailSolutions.Shared.Microservices.Gemco.PedidoVenda --version 1.0.47
                    
#r "nuget: RetailSolutions.Shared.Microservices.Gemco.PedidoVenda, 1.0.47"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package RetailSolutions.Shared.Microservices.Gemco.PedidoVenda@1.0.47
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=RetailSolutions.Shared.Microservices.Gemco.PedidoVenda&version=1.0.47
                    
Install as a Cake Addin
#tool nuget:?package=RetailSolutions.Shared.Microservices.Gemco.PedidoVenda&version=1.0.47
                    
Install as a Cake Tool

PedidoVendaService

A biblioteca PedidoVendaService é uma solução para gerenciamento de pedidos de venda, fornecendo uma interface robusta para criação e processamento de pedidos no sistema Gemco.

Instalação

dotnet add package RetailSolutions.Shared.Microservices.Gemco.PedidoVenda

Dependências

  • .NET 6.0 ou superior
  • Dapper
  • Oracle.ManagedDataAccess.Client
  • Microsoft.Extensions.Logging

Uso Básico

Configuração do Serviço

// Configuração do logger
var loggerFactory = LoggerFactory.Create(builder => builder.AddConsole());
var logger = loggerFactory.CreateLogger<PedidoVendaService>();

// Criação do modelo de pedido
var pedidoVendaModel = new PedidoVendaModel
{
    CodigoFilial = 1,
    CodigoCliente = 123,
    EstadoCliente = "SP",
    DataPedido = DateTime.Now,
    TipoPedido = TipoPedidoGemco.Entrega,
    ValoresPedido = new ValoresPedidoModel
    {
        ValorTotalPedido = 1000.00m,
        ValorMercadoria = 1000.00m
    },
    ItensPedido = new List<ItensPedidoVendaModel>
    {
        new()
        {
            CodigoItemProduto = 123,
            CodigoBarras = 456,
            Quantidade = 1,
            ValoresItemPedido = new ValoresItemPedidoModel
            {
                ValorTotal = 1000.00m
            }
        }
    },
    ParametrosCaixa = new ParametrosCaixaModel
    {
        CodigoFilialCaixa = 1,
        NumeroCaixa = 1,
        CodigoOperadorCaixa = 1
    },
    ParametrosPedido = new ParametrosPedidoModel
    {
        RatearDescontoEntreItens = true,
        RatearFreteEntreItens = true,
        RatearSeguroEntreItens = true
    }
};

// Criação do serviço
var pedidoVendaService = new PedidoVendaService(pedidoVendaModel, logger);

Processamento do Pedido

// Exemplo de uso com Oracle
using (var connection = new OracleConnection(connectionString))
{
    await connection.OpenAsync();
    using var transaction = await connection.BeginTransactionAsync();
    
    try
    {
        var response = await pedidoVendaService.InserirPedidoVendaAsync(
            connection,
            transaction,
            CancellationToken.None
        );
        
        await transaction.CommitAsync();
        
        Console.WriteLine($"Pedido criado com sucesso: {response.NumPedven}");
    }
    catch (Exception ex)
    {
        await transaction.RollbackAsync();
        throw;
    }
}

Modelos Principais

PedidoVendaModel

O modelo principal que contém todas as informações necessárias para criar um pedido:

public class PedidoVendaModel
{
    public int CodigoFilial { get; set; }
    public int CodigoCliente { get; set; }
    public string EstadoCliente { get; set; }
    public DateTime DataPedido { get; set; }
    public TipoPedidoGemco TipoPedido { get; set; }
    public ValoresPedidoModel ValoresPedido { get; set; }
    public List<ItensPedidoVendaModel> ItensPedido { get; set; }
    public ParametrosCaixaModel ParametrosCaixa { get; set; }
    public ParametrosPedidoModel ParametrosPedido { get; set; }
    // ... outras propriedades
}

ItensPedidoVendaModel

Modelo para os itens do pedido:

public class ItensPedidoVendaModel
{
    public int CodigoItemProduto { get; set; }
    public int CodigoBarras { get; set; }
    public decimal Quantidade { get; set; }
    public ValoresItemPedidoModel ValoresItemPedido { get; set; }
    // ... outras propriedades
}

Validações

O serviço realiza várias validações importantes:

  1. Verifica se existem itens no pedido
  2. Valida se os códigos de produtos e códigos de barras são válidos
  3. Verifica se a filial e o cliente são válidos
  4. Valida os valores do pedido
  5. Verifica a data do pedido
  6. Valida parâmetros específicos para pedidos de retirada
  7. Verifica parâmetros do caixa e do pedido

Tratamento de Erros

O serviço utiliza exceções personalizadas para tratamento de erros:

try
{
    var response = await pedidoVendaService.InserirPedidoVendaAsync(connection, transaction, cancellationToken);
}
catch (PedidoVendaException ex)
{
    // Tratamento específico para erros de pedido
    logger.LogError(ex, "Erro ao processar pedido");
}
catch (Exception ex)
{
    // Tratamento para outros erros
    logger.LogError(ex, "Erro inesperado");
}

Funcionalidades Principais

  1. Criação de pedidos de venda
  2. Validação de produtos e estoque
  3. Cálculo de valores e taxas
  4. Gerenciamento de parcelas
  5. Integração com sistema de caixa
  6. Rateio automático de descontos, fretes e seguros
  7. Atualização de estoque reserva

Observações Importantes

  1. O serviço requer uma transação ativa para garantir a integridade dos dados
  2. É necessário fornecer um logger para registro de operações
  3. Todos os valores monetários devem ser fornecidos em decimal
  4. O serviço suporta diferentes tipos de pedido (Entrega, Retira, RetiraPosterior)
  5. É necessário configurar corretamente os parâmetros do caixa e do pedido

Contribuição

Para contribuir com o projeto:

  1. Faça um fork do repositório
  2. Crie uma branch para sua feature (git checkout -b feature/nova-feature)
  3. Commit suas mudanças (git commit -m 'Adiciona nova feature')
  4. Push para a branch (git push origin feature/nova-feature)
  5. Abra um Pull Request

Licença

Este projeto está licenciado sob a licença MIT - veja o arquivo LICENSE para detalhes.

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.67 594 7/22/2025
1.0.65 156 7/10/2025
1.0.62 156 7/9/2025
1.0.58 181 7/1/2025
1.0.56 142 7/1/2025
1.0.54 158 7/1/2025
1.0.50 149 6/26/2025
1.0.49 119 6/20/2025
1.0.48 155 6/17/2025
1.0.47 160 6/15/2025
1.0.46 115 6/15/2025
1.0.45 124 6/15/2025
1.0.44 122 6/15/2025
1.0.43 206 6/13/2025
1.0.42 90 6/6/2025
1.0.41 161 6/4/2025
1.0.40 153 6/3/2025
1.0.38 155 6/1/2025