O que é WMS?

O WMS, warehouse management system ou sistema de gestão de armazém. É o sistema que faz toda a gestão do CD, de todos os recursos, dos produtos etc.

Suas principais funcionalidades de operação são:

  1. Recebimento – Esse é o processo de receber produtos de parceiros/fornecedores, quando integrado ao ERP (saiba mais de ERP aqui), o recebimento pode (deveria) estar ligado à uma compra com nota fiscal.
  2. Conferência – Isso é basicamente o batimento dos itens que você combinou de receber contra o que de fato foi recebido. Esse batimento é feito geralmente com base em uma nota fiscal ou em um pedido de compra. Quando o valor não bate é necessário efetuar uma operação fiscal para correção dessa quantidade, seja uma nota fiscal de devolução quando a quantidade é menor, ou uma nota fiscal de venda para alocar os itens a mais no estoque, ou ainda em alguns casos extremos as mercadorias são todas levadas de volta…
  3. Armazenar – Aqui colocamos todos produtos no devido endereço e o WMS com sua base de dados o faz da melhor forma possível, de forma a melhorar a roteirização feita no armazém pelos que nele operam.
  4. Separação – Da mesma forma como é tratado no artigo Separação de produtos
  5. Expedição – Aqui o WMS gerencia o endereçamento dos produtos para as docas, onde os transportadores aguardam para levar os produtos ao seu destino.
  6. Inventário – É o processo de conferência do estoque, e ele pode ser feito em todo o armazém o que faz com que toda a operação do armazém fique por conta disso, ou pode ser parcialmente, onde uma parte do time da operação faz a validação enquanto outra parte do time fica focada no inventário, isso é importante para operações que não podem parar totalmente, além disso é bom para manter o time operando quando a ociosidade na operação. Seja cíclico ou total o inventário feito periodicamente permite a você identificar rapidamente rupturas e de forma pró-ativa sem afetar suas vendas.
  7. Endereçamento – Você poderá criar espaços delimitados fisicamente no seu armazém (andar, corredor, baia, nível e slot), além criar espaços virtuais, como por exemplo, você poder te um pallet ou box em um lugar determinado no armazém e determinar que todos os itens pequenos com avaria devam ser depositados ali.

Espero que esse artigo tenha contribuído no seu conhecimento.

Abs e até mais.

Anúncios

O que é ERP?

Muitas vezes chegamos em um projeto e temos que integrar com o ERP, receber dados de catálogo de produto do ERP, mandar pedidos para o ERP e fazer tudo quanto é comunicação com o tal do ERP! Mas, na prática o que é ERP? 

ERP é uma sigla oriunda do nome Enterprise Resource Planning que, traduzido ao pé da letra, significa “Planejamento dos recursos da empresa”. ERPs são que softwares que integram todos os dados e processos de uma organização em um único sistema.

Esses ERP’s são grandes sistemas compostos por vários módulos que tem por finalidade suportar a gestão e controlar áreas da empresas, tais como contabilidade, financeiro, fiscal, recursos humanos, logística etc., e mais do que isso como os dados estão na mesma base de dados isso dá condição ao ERP de ter os módulos integrados e de fato manter a empresa toda interligada de forma sistêmica. 

Uma grande vantagem de ter um ERP é justamente a possibilidade de diminuir softwares satélites na Operacao tecnológica. Também há ERP’s específicos para determinadas indústrias/ramos como varejo, moda, escolas, manufaturas farmacêuticas etc. 

Espero que esse artigo tenha agregado valor e conhecimento.  

Abs e até a próxima. 

Recorrência de Pagamento no e-Commerce com cartão de crédito (e um pouco de PCI)

Quantos de vocês têm curiosidade de saber como é que o Spotify, Apple, Netflix dentro outros mensalmente cobram seus clientes no cartão de crédito ou de débito e pedindo esse cartão apenas uma vez? Pois bem, aqui vou colocar algumas abordagens que permitem que essa operação seja feita e de forma segura (tanto para o prestador de serviço quanto para o cliente).

É necessário guardarmos dados do cliente dentro da plataforma e efetuando a cobrança de forma automática, é aqui que temos que levar em consideração detalhes de infraestrutura e desenvolvimento do sistema.

 

Desenvolvimento de software/produto segundo padrão PCI DSS

Há 12 regras/requerimentos que devem ser seguidos quando uma solução precisa seguir os requerimentos do PCI DSS, são elas:

  1. Instalar e manter um firewall para proteger dados de cartão de crédito.
  2. Não utilizar senhas padrão ou outras configurações de segurança dos softwares utilizados.
  3. Proteger dados de cartões de crédito armazenados.
  4. Utilizar criptografia na transmissão de dados de cartões de crédito, manter um programa de Gerenciamento de Vulnerabilidades.
  5. Utilizar regularmente programas anti-vírus.
  6. Desenvolver e manter sistemas e aplicações seguras, implementar um forte controle de acesso.
  7. Restringir acesso a dados de cartões de crédito por negócio e por pessoas que realmente precisam acessá-los.
  8. Designar um único ID para cada usuário da rede e sistemas.
  9. Restringir acesso físico aos dados de cartão de crédito, testar e monitorar a rede regularmente.
  10. Rastrear e monitorar todos os acessos à rede e dados de cartões de crédito.
  11. Testar a segurança de sistemas e processos regularmente, manter um programa de Gerenciamento de Vulnerabilidades.
  12. Manter uma política que enderece informações de segurança.

Não se engane pensando que esses requerimentos são aplicados somente ao software da solução, pois quando você lê o Guia Rápido do PCI DSS fica claro que o hardware também deve ser específico para suportar a operação.

 

Terceirizando a solução

Uma proposição para solução é gravar os dados do cartão dentro de um gateway de pagamento (que por sua vez já deve seguir todas as regas do PCI, portanto o prestador do serviço também já garantiria isso).

Aqui há uma proposição de arquitetura de infraestrutura que a AWS deixou disponível em seu site através do link PCI DSS Compliance on AWS, que está logo abaixo:

pci-on-aws-architecture.png

Talvez seja uma solução muito robusta e complexa para ser mantida por vendedor de serviços ou um varejista.

 

Utilize um gateway de pagamento

Aqui a solução fica bem mais fácil, basicamente vamos guardar os dados dos cartões dos nossos clientes dentro do gateway de pgamento, exatamente da mesma forma como fazemos quando utilizamos a solução de one-click-buy, gravamos um token dentro de nossa plataforma de eCommerce  e apenas passamos o mesmo para o gateway com a requisição de transação.

Aqui tem uma forma que o PayPal sugere para fazer pagamento recorrente, é bem parecido com o que vemos de integração com gateway de pagamento.

RecurringPaymentsFlowUX

Aqui temos temos uma fluxo simples que demonstra que, após ter o dados do cartão gravados na base de dados (qualquer que seja ela), basta ter um agendamento para fazer a requisição da transação novamente.

flow-recurring-payments

Quem é responsável pelas normas do PCI?

É a PCI Security Standards Council que faz a administração dos padrões de segurança do pagamentos de cartão, padrão também conhecido como PCI DSS. Esse órgão foi fundado por instituições como American Express, Discover Financial Services, JCB International, MasterCard Worldwide e Visa Inc.

Quem deve estar dentro desse padrão PCI DSS?

TODAS as empresas que transacionam, armazenam e processam dados do titulas do cartão (CHD – Card Holder Data/Dados do titular do cartão) ou dados que dependem de autenticação (SAD – Sensitive Authentication Data/Dados de autenticação sensíveis), se encaixam nesse perfil varejistas, comerciantes, processadores, compradores, emissores e provedores de serviços.

Bom, espero que isso esse material tenha agregado conhecimento a vocês. Até a próxima!

Referências

https://aws.amazon.com/pt/compliance/pci-dss-level-1-faqs/

https://www.pcisecuritystandards.org/

https://www.pcisecuritystandards.org/pci_security/glossary

https://www.pcisecuritystandards.org/pdfs/pci_ssc_quick_guide.pdf

https://developer.paypal.com/docs/classic/express-checkout/integration-guide/ECRecurringPayments/

http://paylane.com/recurring-payments/

Separação de produtos

Bom pessoal, dando continuidade ao que ocorre na operação de um eCommerce, vou falar agora do ponto de separação de produtos.

Basicamente os produtos eleitos na Geração de onda serão separados agora, cada separador/picker terá uma lista de produtos que deverá buscar no armazém. O processo é relativamente simples: ir até um endereço no armazém (geralmente o armazém é dividido em:

Divisão de um layout de armazém

  1. Andar – Há muitos armazéns com apenas um andar, então não utilizam essa característica
  2. Corredor – São as “ruas” do armazém
  3. Baia – Em uma comparação com a cidade seriam os números das residências
  4. Nível – A altura da baia
  5. Slot – Dentro no nível, isso é como uma subdivisão no nível

Estrutura do código de barras do endereço

E essa mesma estrutura é utilizada para fazer o endereço do item também é utilizada como a etiqueta para guardar os itens, conforme abaixo:

wmsbarcodesample.PNG

E mais do que isso, quando o separador vai em busca dos produtos o WMS cria uma rota para ele, para que a separação seja mais efetiva, e obviamente utiliza os dados de endereçamento dos itens.

Layout/Mapa de Armazém

Abaixo segue um exemplo de layout/mapa de armazém:

Warehousing_layout_example.jpg

Processo de separação

De forma resumida o que o separador faz aqui é:

  1. Pegar a lista de separação de produtos, bem como sua rota;
  2. Seguir o roteiro fazendo a leitura do código de barras dos itens e pegando os mesmo de cada endereço;
  3. Colocar todos esses itens em uma área de consolidação pré-faturamento.

Essa é uma visão simplificada do processo, pois, há operações nas quais os separadores colocam os itens em uma área de pré-consolidação em pontos do corredores e outros separadores levam esses itens para a área de consolidação. Há casos nos quais robôs e esteiras fazem a separação.

Abs e até a próxima!

Referências

How to layout your warehouse?

How to map and label your eCommerce warehouse

Baixar arquivo da Web com Java

Depois de efetuar download de arquivos com C# resolvi fazer o mesmo com Java, como estou estudando essa tecnologia agora talvez tenha alguma forma melhor de fazer do que a eu utilizei, de qualquer forma está bem fácil de entender. Veja o código abaixo:


import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;

public class Arquivo {
 public static void main(String[] args) throws IOException {

URL url = new URL("http://localhost/catalog.xml");
 String destino = "C:\\Temp\\catalog_java.xml";

InputStream is = url.openStream();

FileOutputStream fos = new FileOutputStream(destino);

int bytes = 0;

while ((bytes = is.read()) != -1) {
 fos.write(bytes);
 }

 is.close();

 fos.close();
 }
}

Até o próxima!

Baixar arquivos da Web com C#

Este exemplo mostra como baixar arquivos a partir de qualquer website para o disco local. Uma maneira simples para efetuar o download do arquivo é usar a classe WebClient e seu método DownloadFile. Este método tem dois parâmetros, primeiro é a url do arquivo que você deseja fazer o download e o segundo parâmetro é o caminho para o disco local para o qual deseja salvar o arquivo.

De forma síncrona

O código a seguir mostra como fazer o download de arquivos de forma síncrona. Este método bloqueia a thread principal até que o arquivo é baixado ou ocorrer um erro (neste caso, o WebException é lançada).


using System.Net;

WebClient webClient = new WebClient();
webClient.DownloadFile("http://localhost/arquivo.txt", @"c:\temp\arquivo.txt");

De forma assíncrona

Para baixar um arquivo sem bloquear o segmento principal uso DownloadFileAsync método assíncrono. Você também pode definir manipuladores de eventos para mostrar o progresso e para detectar que o arquivo é baixado. Faça o exemplo abaixo com uma aplicação Windows Forms.


private void btnDownload_Click(object sender, EventArgs e)
{
 WebClient webClient = new WebClient();
 webClient.DownloadFileCompleted += new AsyncCompletedEventHandler(Completo);
 webClient.DownloadProgressChanged += new DownloadProgressChangedEventHandler(ProgressoFeito);
 webClient.DownloadFileAsync(new Uri("http://localhost/arquivo.txt"), @"c:\temp\arquivo.txt");
}

private void ProgressoFeito(object sender, DownloadProgressChangedEventArgs e)
{
 progressBar.Value = e.ProgressPercentage;
}

private void Completo(object sender, AsyncCompletedEventArgs e)
{
 MessageBox.Show("Download efetuado!");
}

Até a próxima.

Encurtador de URL’s

Essa semana, aproveitei para colocar um pequeno projeto para funcionar, arquitetei e montei um Encurtador de URL’s que faz utilização do Dot Net Framework 4, SQL Server 2008, C#, integração com Web Services.

Da forma como foi feito encurtará apenas um pouco mais de 6 milhões de URL’s, mas está muito fácil para alterar o algorítimo para ter 5 caracteres ao invés de 4 na chave da URL.

A idéia é evoluir esse software e se aumentar muito a quantidade de acessos utilizar um banco de dados como o Apache Cassandra.

O Encurtador de URL’s está disponível no link http://devd.im, e o código fonte está em http://sourceforge.net/projects/devdim.

http://devd.im/