Skip to content
This repository has been archived by the owner on Jan 15, 2022. It is now read-only.

Commit

Permalink
Merge pull request #17 from jonyw4/2.0.0
Browse files Browse the repository at this point in the history
2.0.0
  • Loading branch information
jonyw4 authored Oct 22, 2020
2 parents 5cc08b5 + 65652da commit a65a1f7
Show file tree
Hide file tree
Showing 15 changed files with 935 additions and 5,901 deletions.
25 changes: 25 additions & 0 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
{
"name": "Vendure WebmaniaBR Plugin",
"dockerComposeFile": [
"../docker-compose.yml"
],
"service": "dev",
"workspaceFolder": "/workspace",
"settings": {
"terminal.integrated.shell.linux": "/bin/bash"
},
"extensions": [
"christian-kohler.path-intellisense",
"christian-kohler.npm-intellisense",
"mhutchie.git-graph",
"dbaeumer.vscode-eslint",
"joelday.docthis",
"esbenp.prettier-vscode",
"mikehanson.auto-barrel",
"streetsidesoftware.code-spell-checker",
"steoates.autoimport"
],
"forwardPorts": [3000, 3306],
"postCreateCommand": "yarn install",
// "remoteUser": "node"
}
44 changes: 4 additions & 40 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,46 +5,18 @@

📄 Plugin para [Vendure](https://github.com/vendure-ecommerce/vendure) para emitir NFe pelo Vendure usando Webmania BR. O plugin está em fase de testes e tem apenas o necessário para emitir nota fiscal.

## 🌟 Features
- Emite nota fiscal quando transaciona o status `Packed`.
- Adiciona `customFields` em `Address`, `Order` e `Product`

## ❗ Requisitos:
- `@vendure/core` >= 0.14.0
- `@vendure-advanced-shipping/core` >=2.1.1
- [Conferir como os dados são montados para verificar se bate com os requisitos da sua loja](https://github.com/jonyw4/vendure-webmaniabr-plugin/blob/master/src/custom-validation-proccess.ts). Se algum campo faltar por favor abrir PR ou mandar issue
- Cadastrar possíveis caixas que serão utilizadas no envio. Para isso usamos o [plugin *Advanced Shipping*](https://github.com/jonyw4/vendure-advanced-shipping)

**Você PRECISA preencher os seguintes campos no Vendure para emitir a nota fiscal**.
### `Product`
- customFields.ncm
- customFields.origem
- customFields.massUnit
- customFields.weight

**Você PRECISA solicitar os seguintes campos para seu usuário antes de finalizar a compra**:
- `@vendure/core` ~ 0.16.0

### `Address` (`BillingAddress` e `ShippingAddress`)
- city
- country
- postalCode
- phoneNumber
- customFields.isCompany
- customFields.cpfCnpj
- customFields.rgIE
- customFields.addressNumber
- customFields.addressComplemento
- customFields.uf
## Como funciona?
Esse plugin cria um `CustomFulfillmentProcess` onde executa a biblioteca javascript do WebmaniaBR para criar NFe. Você determina em qual condição a NFe será criada e também como será salva.

## ⚙️ Instalação
### 1. Instale e configure o Vendure
### 2. Instale e configure o [Vendure Advanced Shipping](https://github.com/jonyw4/vendure-advanced-shipping#%EF%B8%8F-install)
### 3. Instale o pacote
```bash
npm install vendure-webmaniabr-plugin --save
```

### 4. Add o plugin nas configurações inserindo suas chaves e escolhendo a sua configuração
### Add o plugin nas configurações inserindo suas chaves e escolhendo a sua configuração
```typescript
import { WebmaniaBRPlugin } from '@vendure-advanced-shipping/core';
const config: VendureConfig = {
Expand All @@ -62,13 +34,5 @@ const config: VendureConfig = {
}
```

### 📚 Como usar?
Depois de configurado agora podemos cadastrar informações referente a NFe na pagina do produto, como também temos como solicitar esses dados ao cliente.

- Todos dados da NFe do produto estarão disponíveis na página do produto.
- Para preencher os dados pedidos nos requisitos ao cliente você precisara utilizar a _mutation_ `setOrderBillingAddress` e `setOrderShippingAddress` em seu _storefront_
- Sempre que uma NFe é criada é salvo o ID do WebmaniaBR no _customField_ `nfeUuid` em `Order`.
- O plugin está em fase de testes e tem apenas os campos obrigatórios para a emissão da nota fiscal. Se você deseja que algum campo ou recurso seja adicionado, crie um PR ou uma issue para discutirmos.

## ❗️ Licença
MIT
12 changes: 12 additions & 0 deletions docker-compose.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
version: "3"
services:
dev:
image: mcr.microsoft.com/vscode/devcontainers/typescript-node:0-12
command: /bin/sh -c "while sleep 1000; do :; done"
ports:
- "3000:3000"
volumes:
- .:/workspace:cached
- node_modules:/workspace/node_modules
volumes:
node_modules:
10 changes: 4 additions & 6 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,7 @@
"test:e2e": "rimraf e2e/__data__ && jest --config e2e/config/jest-config.js"
},
"peerDependencies": {
"@vendure/core": ">=0.14.0",
"@vendure-advanced-shipping/core": ">=2.1.1"
"@vendure/core": "~0.16.0"
},
"dependencies": {
"webmaniabr-js": "1.0.4"
Expand All @@ -32,9 +31,8 @@
"@types/jest": "26.0.4",
"@typescript-eslint/eslint-plugin": "3.6.1",
"@typescript-eslint/parser": "3.6.1",
"@vendure-advanced-shipping/core": "2.1.1",
"@vendure/core": "0.14.0",
"@vendure/testing": "0.14.0",
"@vendure/core": "0.16.1",
"@vendure/testing": "0.16.1",
"commitlint": "9.1.0",
"eslint": "7.4.0",
"eslint-config-prettier": "6.11.0",
Expand All @@ -46,7 +44,7 @@
"rimraf": "3.0.2",
"semantic-release": "17.1.1",
"ts-jest": "26.1.3",
"typescript": "3.8.3"
"typescript": "4.0.3"
},
"husky": {
"hooks": {
Expand Down
37 changes: 37 additions & 0 deletions src/custom-fulfillment-proccess.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
import WebmaniaBR from 'webmaniabr-js';
import { CustomFulfillmentProcess, FulfillmentState } from '@vendure/core';
import { WebmaniaBRPluginOptions } from './types';

export function createCustomFulfillmentProcess<T extends FulfillmentState>(
options: WebmaniaBRPluginOptions<T>
): CustomFulfillmentProcess<T> {
const { createNfe } = options;
const webmaniaClient = new WebmaniaBR(
options.consumerKey,
options.consumerSecret,
options.accessToken,
options.accessTokenSecret,
options.timeout
);

return {
init: async (injector) => {
if (typeof options.init === 'function') {
await options.init(injector);
}
},
destroy: async () => {
if (typeof options.destroy === 'function') {
await options.destroy();
}
},
onTransitionStart: async (fromState, toState, data) => {
if (fromState === createNfe.fromState || toState === createNfe.toState) {
return createNfe.save(
data,
await webmaniaClient.createNotaFiscal(createNfe.map(data))
);
}
}
};
}
Loading

0 comments on commit a65a1f7

Please sign in to comment.