561 lines
33 KiB
TypeScript
561 lines
33 KiB
TypeScript
/*
|
|
https://docs.nestjs.com/providers#services
|
|
*/
|
|
|
|
import { Injectable } from '@nestjs/common';
|
|
import { connectionOptions } from 'src/configs/typeorm.config';
|
|
import { Estparceiro } from 'src/domain/entity/tables/estparceiro.entity';
|
|
import { CreatePaymentPartner } from 'src/domain/models/create-payment-partner.model';
|
|
import { Customer } from 'src/domain/models/customer.model';
|
|
import { Partner } from 'src/domain/models/partner.model';
|
|
import { CustomerService } from 'src/sales/customer/customer.service';
|
|
import { Connection } from 'typeorm';
|
|
//import { DataSource } from 'typeorm';
|
|
import { EntityManager } from 'typeorm';
|
|
|
|
|
|
@Injectable()
|
|
export class PartnerService {
|
|
|
|
constructor(
|
|
private readonly customerService: CustomerService,
|
|
) { }
|
|
|
|
async getPartners(type: string, cpf: string, name: string) {
|
|
const connection = new Connection(connectionOptions);
|
|
await connection.connect();
|
|
const queryRunner = connection.createQueryRunner();
|
|
await queryRunner.connect();
|
|
|
|
const sql = 'SELECT estparceiro.id as "id" ' +
|
|
' ,CASE WHEN estparceiro.tipo = \'M\' THEN \'MESTRE JURUNENSE\' ' +
|
|
' WHEN estparceiro.tipo = \'P\' THEN \'PARCEIRO\' ' +
|
|
' WHEN estparceiro.tipo = \'B\' THEN \'BELLA OBRA\' ' +
|
|
' ELSE \'NÃO INFORMADO\' END as "type" ' +
|
|
' ,estparceiro.cpf as "cpf" ' +
|
|
' ,estparceiro.nome as "name" ' +
|
|
' ,estparceiro.telefone as "phone" ' +
|
|
' ,estcategoriaparceiro.descricao as "category" ' +
|
|
` ,estparceiro.dtcadastro as "createDate" ` +
|
|
` ,func_cad.usuariobd as "userCreate" ` +
|
|
` ,estparceiro.dtalteracao as "updateDate" ` +
|
|
` ,func_alt.usuariobd as "userUpdate" ` +
|
|
' FROM estparceiro, estcategoriaparceiro, pcempr func_cad, pcempr func_alt ' +
|
|
' WHERE estparceiro.codcategoria = estcategoriaparceiro.id (+) ' +
|
|
' AND estparceiro.codfunccadastro = func_cad.matricula (+) ' +
|
|
' AND estparceiro.codfuncalteracao = func_alt.matricula (+) ';
|
|
|
|
let whereSql = ` AND ( estparceiro.tipo = '${type}' OR '${type}' = 'T' ) `;
|
|
if (cpf != null && cpf.length >= 2) {
|
|
whereSql += ` AND REGEXP_REPLACE(estparceiro.cpf, '[^0-9]', '') = REGEXP_REPLACE('${cpf}', '[^0-9]', '') `;
|
|
}
|
|
if (name != null && name.length >= 3) {
|
|
whereSql += ` AND estparceiro.nome like '${name}'||'%' `;
|
|
}
|
|
try {
|
|
const partners = await queryRunner.query(sql + whereSql);
|
|
return partners;
|
|
} catch (error) {
|
|
throw error;
|
|
} finally {
|
|
await queryRunner.release();
|
|
await connection.close();
|
|
}
|
|
}
|
|
|
|
async getPartner(campo: string) {
|
|
const connection = new Connection(connectionOptions);
|
|
await connection.connect();
|
|
const queryRunner = connection.createQueryRunner();
|
|
await queryRunner.connect();
|
|
try {
|
|
const sql = ` SELECT estparceiro.id as "id" ` +
|
|
` ,estparceiro.nome as "name" ` +
|
|
` ,estparceiro.cpf as "cpf" ` +
|
|
` ,estparceiro.tipo as "type" ` +
|
|
` ,estparceiro.rg as "rg" ` +
|
|
` ,estparceiro.regprofissional as "professionalNumber" ` +
|
|
` ,estparceiro.telefone as "phone" ` +
|
|
` ,estparceiro.email as "email" ` +
|
|
` ,estparceiro.chavepix as "pixKey" ` +
|
|
` ,estparceiro.compradorpj as "buyer" ` +
|
|
` ,estparceiro.codcli as "customerId" ` +
|
|
` ,estparceiro.codusur as "sellerId" ` +
|
|
` ,estparceiro.banco as "bank" ` +
|
|
` ,estparceiro.agencia as "agencia" ` +
|
|
` ,estparceiro.conta as "conta" ` +
|
|
` ,estparceiro.cep as "zipCode" ` +
|
|
` ,estparceiro.endereco as "address" ` +
|
|
` ,estparceiro.numero as "number" ` +
|
|
` ,estparceiro.complemento as "complement" ` +
|
|
` ,estparceiro.bairro as "neighborhood" ` +
|
|
` ,estparceiro.cidade as "city" ` +
|
|
` ,estparceiro.estado as "state" ` +
|
|
` ,estparceiro.codcategoria as "categoryId" ` +
|
|
` ,estparceiro.codusurparceiro as "sellerIdPartner" ` +
|
|
` ,estparceiro.codpraca as "placeId" ` +
|
|
` ,estparceiro.codcategoria as "categoryId" ` +
|
|
` ,estparceiro.observacao as "observer1" ` +
|
|
` ,estparceiro.observacao2 as "observer2" ` +
|
|
` ,estparceiro.codIbge as "ibgeCode" ` +
|
|
` ,estparceiro.perccomissao as "commission" ` +
|
|
` ,estparceiro.dtcadastro as "createDate" ` +
|
|
` ,func_cad.usuariobd as "userCreate" ` +
|
|
` ,estparceiro.dtalteracao as "updateDate" ` +
|
|
` ,func_alt.usuariobd as "userUpdate" ` +
|
|
' FROM estparceiro, pcempr func_cad, pcempr func_alt ' +
|
|
` WHERE REGEXP_REPLACE(estparceiro.cpf, '[^0-9]', '') = REGEXP_REPLACE(:1, '[^0-9]', '') ` +
|
|
` AND estparceiro.codfunccadastro = func_cad.matricula (+) ` +
|
|
` AND estparceiro.codfuncalteracao = func_alt.matricula (+) `;
|
|
|
|
const partner = await queryRunner.manager.query(sql, [campo]);
|
|
return partner[0];
|
|
} catch (error) {
|
|
console.log('Erro ao consultar parceiro.');
|
|
throw error;
|
|
} finally {
|
|
await queryRunner.release();
|
|
await connection.close();
|
|
}
|
|
}
|
|
|
|
async createOrUpdatePartner(data: Partner) {
|
|
// let estParceiro = await this.getPartner(data.cpf);
|
|
|
|
const connection = new Connection(connectionOptions);
|
|
await connection.connect();
|
|
const queryRunner = connection.createQueryRunner();
|
|
await queryRunner.connect();
|
|
|
|
let estParceiro = await queryRunner.manager.findOne(Estparceiro, {
|
|
cpf: data.cpf,
|
|
});
|
|
const rca = await queryRunner.query("SELECT PCUSUARI.CODUSUR, PCUSUARI.ROWID as \"rid\" FROM PCUSUARI WHERE REGEXP_REPLACE(CPF, '[^0-9]', '') = REGEXP_REPLACE(:1, '[^0-9]', '')",
|
|
[data.cpf]);
|
|
|
|
await queryRunner.startTransaction();
|
|
try {
|
|
let id = 1;
|
|
if (estParceiro != null) {
|
|
id = estParceiro.id;
|
|
} else {
|
|
const queryId = await queryRunner.query('SELECT ESSPARCEIRO.NEXTVAL AS "id" FROM DUAL');
|
|
if (queryId.length > 0) {
|
|
id = queryId[0].id;
|
|
}
|
|
}
|
|
if (estParceiro == null) {
|
|
estParceiro = new Estparceiro();
|
|
estParceiro.codfunccadastro = data.userId;
|
|
estParceiro.dtcadastro = new Date();
|
|
}
|
|
estParceiro.id = id;
|
|
estParceiro.agencia = data.agencia;
|
|
estParceiro.bairro = data.neighborhood;
|
|
estParceiro.banco = data.bank;
|
|
estParceiro.cep = data.zipCode;
|
|
estParceiro.codibge = data.ibgeCode;
|
|
estParceiro.chavepix = data.pixKey;
|
|
estParceiro.cidade = data.city.toUpperCase();
|
|
estParceiro.codcli = data.customerId;
|
|
estParceiro.codusur = data.sellerId;
|
|
estParceiro.conta = data.conta;
|
|
estParceiro.cpf = data.cpf;
|
|
estParceiro.email = data.email;
|
|
estParceiro.endereco = data.address;
|
|
estParceiro.estado = data.state;
|
|
estParceiro.nome = data.name.toUpperCase();
|
|
estParceiro.numero = data.number;
|
|
estParceiro.complemento = data.complement;
|
|
estParceiro.observacao = data.observer1;
|
|
estParceiro.observacao2 = data.observer2;
|
|
// estParceiro.orgaoexp = data.orgaoexp;
|
|
estParceiro.rg = data.rg;
|
|
estParceiro.regprofissional = data.professionalNumber;
|
|
estParceiro.telefone = data.phone;
|
|
estParceiro.tipo = data.type;
|
|
estParceiro.compradorPj = data.buyer ? 'S' : 'N';
|
|
estParceiro.codcli = data.customerId;
|
|
estParceiro.codusur = data.sellerId;
|
|
estParceiro.codcategoria = data.categoryId;
|
|
estParceiro.codpraca = data.placeId;
|
|
estParceiro.perccomissao = data.commission;
|
|
estParceiro.codfuncalteracao = data.userId;
|
|
estParceiro.dtalteracao = new Date();
|
|
if (rca !== null && rca.length > 0) {
|
|
estParceiro.codusurparceiro = rca[0].CODUSUR;
|
|
await queryRunner.manager.save(estParceiro);
|
|
}
|
|
|
|
if (rca == null || rca.length == 0) {
|
|
const idSellerPartner = await queryRunner.query(`SELECT NVL(MAX(CODUSUR),20000) + 1 as "id" FROM PCUSUARI WHERE CODUSUR BETWEEN 20000 AND 30000`);
|
|
estParceiro.codusurparceiro = idSellerPartner[0].id;
|
|
await queryRunner.manager.save(estParceiro);
|
|
|
|
const sqlCreateRCA = "INSERT INTO PCUSUARI ( CODUSUR, NOME, TIPOVEND, PERCENT2, ENDERECO, CIDADE, ESTADO, CEP, " +
|
|
" TELEFONE1, CPF, CI, BLOQUEIO, DTINICIO, DTNASC, BAIRRO, CODSUPERVISOR, EMAIL, " +
|
|
" PROXNUMPED, CODFILIAL, PROXNUMPEDFORCA, BLOQCOMIS, CODDISTRIB, ENDERECO2, AREAATUACAO, TIPOCOMISSAO, " +
|
|
" USADEBCREDRCA, PROXNUMPEDWEB, TIPOPESSOA, PERMITEADIANTCOMISSAO, CPFAUX, CODCIDADE, PCUSUARI.NUMBANCO, " +
|
|
" PCUSUARI.NUMAGENCIA, PCUSUARI.NUMCCORRENTE ) " +
|
|
" SELECT :1, ESTPARCEIRO.NOME, 'P', 0, SUBSTR(ESTPARCEIRO.ENDERECO,1,40), ESTPARCEIRO.CIDADE, ESTPARCEIRO.ESTADO, " +
|
|
" ESTPARCEIRO.CEP, ESTPARCEIRO.telefone, ESTPARCEIRO.CPF, ESTPARCEIRO.RG, " +
|
|
" 'N', TRUNC(SYSDATE) - 1, NULL, SUBSTR(ESTPARCEIRO.BAIRRO,1,25), 5, ESTPARCEIRO.EMAIL, " +
|
|
" TO_NUMBER(:2||'0001'), '99', TO_NUMBER(:3||'0001'), " +
|
|
" 'N', '1', NULL, NULL, 'P', 'N', TO_NUMBER(:4||'0001'), 'F', 'N', " +
|
|
" TO_CHAR(REGEXP_REPLACE(ESTPARCEIRO.CPF,'[^0-9]', ''), '00000000000000'), NULL, " +
|
|
" ESTPARCEIRO.BANCO, ESTPARCEIRO.AGENCIA, ESTPARCEIRO.CONTA " +
|
|
" FROM ESTPARCEIRO " +
|
|
" WHERE ESTPARCEIRO.id = :5";
|
|
await queryRunner.query(sqlCreateRCA, [idSellerPartner[0].id, idSellerPartner[0].id,
|
|
idSellerPartner[0].id, idSellerPartner[0].id, id]);
|
|
}
|
|
|
|
await queryRunner.commitTransaction();
|
|
|
|
const customer = await queryRunner.query("SELECT PCCLIENT.CODCLI FROM PCCLIENT WHERE REGEXP_REPLACE(CGCENT, '[^0-9]', '') = REGEXP_REPLACE(:1, '[^0-9]', '')",
|
|
[data.cpf]);
|
|
if (customer == null || customer.length == 0) {
|
|
const newCustomer = new Customer(null,
|
|
data.name,
|
|
data.name,
|
|
data.cpf,
|
|
'M',
|
|
'',
|
|
data.email,
|
|
data.zipCode,
|
|
data.address,
|
|
data.number,
|
|
data.complement,
|
|
data.neighborhood,
|
|
data.city,
|
|
data.state,
|
|
true,
|
|
data.phone,
|
|
null,
|
|
null,
|
|
data.place,
|
|
data.sellerId,
|
|
data.ibgeCode,
|
|
null,
|
|
null
|
|
);
|
|
|
|
const resultCustomer = await this.customerService.createCustomer(newCustomer);
|
|
const textCustomer = JSON.stringify(resultCustomer);
|
|
if (textCustomer.indexOf('customerId') >= 0) {
|
|
const customer = JSON.parse(textCustomer);
|
|
await queryRunner.startTransaction();
|
|
estParceiro.codcli = customer.customerId;
|
|
await queryRunner.manager.save(estParceiro);
|
|
await queryRunner.commitTransaction();
|
|
}
|
|
|
|
} else {
|
|
await queryRunner.startTransaction();
|
|
estParceiro.codcli = customer[0].CODCLI;
|
|
await queryRunner.manager.save(estParceiro);
|
|
await queryRunner.commitTransaction();
|
|
}
|
|
|
|
data.id = id;
|
|
|
|
return data;
|
|
|
|
} catch (error) {
|
|
if ( queryRunner.isTransactionActive) {
|
|
await queryRunner.rollbackTransaction();
|
|
}
|
|
console.log(error);
|
|
throw error;
|
|
} finally {
|
|
await queryRunner.release();
|
|
await connection.close();
|
|
}
|
|
|
|
|
|
}
|
|
|
|
async getPayment(partnerId: number, type: number, month: string, year: string) {
|
|
const connection = new Connection(connectionOptions);
|
|
await connection.connect();
|
|
const queryRunner = connection.createQueryRunner();
|
|
await queryRunner.connect();
|
|
try {
|
|
const dataApuracao = '01/' + month + '/' + year;
|
|
console.log(type);
|
|
const sql = `SELECT
|
|
EXTRATO.CODPARCEIRO as "partnerId"
|
|
,ESTPARCEIRO.NOME as "name"
|
|
,ESTPARCEIRO.TELEFONE as "phone"
|
|
,EXTRATO.NOMETIPOPARCEIRO as "type"
|
|
,ESTPARCEIRO.CPF as "document"
|
|
,ESTPARCEIRO.CHAVEPIX as "pixKey"
|
|
,EXTRATO.TIPOPARCEIRO as "partnerType"
|
|
,sum(case when tipomovimento = 'VENDA' then VLTOTAL else 0 end) as "saleValue"
|
|
,sum(case when tipomovimento = 'DEVOLUCAO' then VLTOTAL else 0 end) "devolValue"
|
|
,sum(case when SEQ = 1 then extrato.vlsaldo else 0 end) as "previusBalance"
|
|
,sum(EXTRATO.VALORCOMISSAO) "commissionValue"
|
|
,sum(case when tipomovimento = 'DEPOSITO' then VALORGERADO else 0 end) as "paidValue"
|
|
,sum(case when tipomovimento = 'CREDITO' then VALORGERADO else 0 end) as "creditValue"
|
|
,SUM(SUM(VLSALDO))
|
|
OVER(PARTITION BY EXTRATO.CODPARCEIRO ORDER BY EXTRATO.CODPARCEIRO) as "balance"
|
|
FROM ( SELECT 1 AS SEQ,
|
|
'6' CODFILIAL,
|
|
'SALDO INICIAL' AS tipomovimento,
|
|
esvextratoparceiro.tipoparceiro ,
|
|
TO_DATE (:1, 'DD/MM/YYYY') DATAVENDA,
|
|
NULL AS NUMNOTA,
|
|
NULL AS CODUSUR,
|
|
NULL AS CLIENTE,
|
|
esvextratoparceiro.descricaotipo AS NOMETIPOPARCEIRO,
|
|
estparceiro.id CODPARCEIRO,
|
|
estparceiro.nome NOMEPARCEIRO,
|
|
NULL AS VLTOTAL,
|
|
NULL AS PERCCOMISSAO,
|
|
NULL AS PERCDESCONTO,
|
|
NULL AS VALORCOMISSAO,
|
|
NULL AS PERCENTUAL,
|
|
NULL AS VALORGERADO,
|
|
NULL AS VALORPAGO,
|
|
NULL AS DATAPAGTO,
|
|
NULL AS TIPOPAGAMENTO,
|
|
SUM (esvextratoparceiro.vlsaldo) vlsaldo
|
|
FROM esvextratoparceiro, estparceiro
|
|
WHERE esvextratoparceiro.codparceiro = estparceiro.id
|
|
AND esvextratoparceiro.data < TO_DATE(:2, 'DD/MM/YYYY')
|
|
GROUP BY estparceiro.id, estparceiro.nome, estparceiro.tipo, esvextratoparceiro.tipoparceiro, esvextratoparceiro.descricaotipo
|
|
UNION ALL
|
|
SELECT 2 SEQ,
|
|
esvextratoparceiro.codfilial,
|
|
esvextratoparceiro.tipomovimento,
|
|
esvextratoparceiro.tipoparceiro,
|
|
esvextratoparceiro.data,
|
|
esvextratoparceiro.numnota,
|
|
esvextratoparceiro.nomevendedor,
|
|
esvextratoparceiro.cliente,
|
|
esvextratoparceiro.descricaotipo,
|
|
esvextratoparceiro.codparceiro,
|
|
esvextratoparceiro.nomeparceiro,
|
|
esvextratoparceiro.vltotal,
|
|
esvextratoparceiro.perccomissao,
|
|
esvextratoparceiro.percentual_desconto,
|
|
esvextratoparceiro.vlcomissao,
|
|
esvextratoparceiro.perccomissao,
|
|
esvextratoparceiro.valorgerado,
|
|
esvextratoparceiro.valorpago,
|
|
esvextratoparceiro.dtpagto,
|
|
esvextratoparceiro.tipopagto,
|
|
esvextratoparceiro.vlsaldo
|
|
FROM esvextratoparceiro
|
|
WHERE esvextratoparceiro.data BETWEEN TO_DATE(:3, 'DD/MM/YYYY')
|
|
AND last_day(TO_DATE(:4, 'DD/MM/YYYY'))) extrato, ESTPARCEIRO
|
|
WHERE EXTRATO.CODPARCEIRO = ESTPARCEIRO.ID
|
|
AND ( EXTRATO.CODPARCEIRO = :5 OR :6 = -1 )
|
|
AND ( EXTRATO.TIPOPARCEIRO = :7 OR :8 = 99 )
|
|
GROUP BY
|
|
EXTRATO.CODPARCEIRO
|
|
,ESTPARCEIRO.NOME
|
|
,ESTPARCEIRO.TELEFONE
|
|
,EXTRATO.TIPOPARCEIRO
|
|
,EXTRATO.NOMETIPOPARCEIRO
|
|
,ESTPARCEIRO.CPF
|
|
,ESTPARCEIRO.CHAVEPIX
|
|
,EXTRATO.TIPOPARCEIRO
|
|
ORDER BY extrato.CODPARCEIRO`;
|
|
const data = await queryRunner.query(sql,
|
|
[dataApuracao, dataApuracao, dataApuracao, dataApuracao,
|
|
partnerId, partnerId, type, type]);
|
|
|
|
// const sql = `SELECT ` +
|
|
// ` ESVCOMISSAOPARCEIRO.CODPARCEIRO as "partnerId" ` +
|
|
// ` ,ESVCOMISSAOPARCEIRO.NOMEPARCEIRO as "name" ` +
|
|
// ` ,ESVCOMISSAOPARCEIRO.TELEFONE as "phone" ` +
|
|
// ` ,ESVCOMISSAOPARCEIRO.TIPOPARCEIRO as "typePartner" ` +
|
|
// ` ,ESVCOMISSAOPARCEIRO.DESCRICAOTIPO as "type" ` +
|
|
// ` ,SUM(ESVCOMISSAOPARCEIRO.VLTOTAL) as "saleValue" ` +
|
|
// ` ,SUM(ESVCOMISSAOPARCEIRO.VLCOMISSAO) as "comissionValue" ` +
|
|
// ` ,(NVL((SELECT sum(ESTSALDOPARCEIRO.VALOR) FROM ESTSALDOPARCEIRO ` +
|
|
// ` WHERE ESTSALDOPARCEIRO.CODPARCEIRO = ESVCOMISSAOPARCEIRO.CODPARCEIRO ` +
|
|
// ` AND ESTSALDOPARCEIRO.DTVENC BETWEEN TO_DATE(:1, 'DD/MM/YYYY') ` +
|
|
// ` AND LAST_DAY(TO_DATE(:2, 'DD/MM/YYYY'))),0)) as "prevValue" ` +
|
|
// ` ,NVL((SELECT SUM(ESTPAGTOPARCEIRO.VLPAGTO) FROM ESTPAGTOPARCEIRO ` +
|
|
// ` WHERE ESTPAGTOPARCEIRO.CODPARCEIRO = ESVCOMISSAOPARCEIRO.CODPARCEIRO ` +
|
|
// ` AND ESTPAGTOPARCEIRO.MES = :3 ` +
|
|
// ` AND ESTPAGTOPARCEIRO.ANO = :4),0) as "paymentValue" ` +
|
|
// ` ,( SUM(ESVCOMISSAOPARCEIRO.VLCOMISSAO) + ` +
|
|
// ` NVL((SELECT SUM(ESTSALDOPARCEIRO.VALOR) FROM ESTSALDOPARCEIRO ` +
|
|
// ` WHERE ESTSALDOPARCEIRO.CODPARCEIRO = ESVCOMISSAOPARCEIRO.CODPARCEIRO ` +
|
|
// ` AND ESTSALDOPARCEIRO.DTVENC BETWEEN TO_DATE(:5, 'DD/MM/YYYY') ` +
|
|
// ` AND LAST_DAY(TO_DATE(:6, 'DD/MM/YYYY'))),0) - ` +
|
|
// ` NVL((SELECT SUM(ESTPAGTOPARCEIRO.VLPAGTO) FROM ESTPAGTOPARCEIRO ` +
|
|
// ` WHERE ESTPAGTOPARCEIRO.CODPARCEIRO = ESVCOMISSAOPARCEIRO.CODPARCEIRO ` +
|
|
// ` AND ESTPAGTOPARCEIRO.MES = :7 ` +
|
|
// ` AND ESTPAGTOPARCEIRO.ANO = :8),0) ) as "valueForPayment" ` +
|
|
// ` FROM ESVCOMISSAOPARCEIRO ` +
|
|
// ` WHERE ESVCOMISSAOPARCEIRO.DTSAIDA BETWEEN :9 AND LAST_DAY(:10) ` +
|
|
// ` AND ( ESVCOMISSAOPARCEIRO.CODPARCEIRO = :11 OR :12 = -1 ) ` +
|
|
// ` AND ( ESVCOMISSAOPARCEIRO.TIPOPARCEIRO = :13 OR :14 = 99 ) ` +
|
|
// ` GROUP BY ESVCOMISSAOPARCEIRO.CODPARCEIRO, ESVCOMISSAOPARCEIRO.TIPOPARCEIRO, ` +
|
|
// ` ESVCOMISSAOPARCEIRO.DESCRICAOTIPO, ESVCOMISSAOPARCEIRO.NOMEPARCEIRO, ESVCOMISSAOPARCEIRO.TELEFONE `;
|
|
|
|
|
|
return data;
|
|
} catch (error) {
|
|
console.log(error);
|
|
} finally {
|
|
await queryRunner.release();
|
|
await connection.close();
|
|
}
|
|
|
|
}
|
|
|
|
async createPayment(createPayments: CreatePaymentPartner[]) {
|
|
const connection = new Connection(connectionOptions);
|
|
await connection.connect();
|
|
const queryRunner = connection.createQueryRunner();
|
|
await queryRunner.connect();
|
|
try {
|
|
for (const createPayment of createPayments) {
|
|
const date = new Date(createPayment.dueDate);
|
|
const day = ('00' + date.getDate()).slice(-2);
|
|
const month = ('00' + ( date.getMonth() + 1 )).slice(-2);
|
|
const year = date.getFullYear();
|
|
const dueDate = day + '/' + month + '/' + year;
|
|
console.log('data de vencimento: ' + dueDate);
|
|
console.log(JSON.stringify(createPayment));
|
|
await queryRunner
|
|
.query("BEGIN ESK_VENDA.GERAR_COMISSAO_PARCEIROS(:1, :2, :3, :4, :5); END;",
|
|
[createPayment.partnerId, createPayment.month, createPayment.year,
|
|
dueDate, createPayment.userId]);
|
|
}
|
|
} finally {
|
|
await queryRunner.release();
|
|
await connection.close();
|
|
}
|
|
}
|
|
|
|
|
|
async getExtractPartner(partnerId: number, start: Date, end: Date) {
|
|
|
|
const connection = new Connection(connectionOptions);
|
|
await connection.connect();
|
|
const queryRunner = connection.createQueryRunner();
|
|
await queryRunner.connect();
|
|
|
|
const dateStart = ( "00" + start.getDate().toString()).slice(-2) + '/' + ("00" + ((start.getMonth() + 1).toString())).slice(-2) + '/' + start.getFullYear();
|
|
const dateEnd = ( "00" + end.getDate().toString()).slice(-2) + '/' + ("00" + ((end.getMonth() + 1).toString())).slice(-2) + '/' + end.getFullYear();
|
|
try {
|
|
const sql = `SELECT EXTRATO."seq"
|
|
,EXTRATO."store"
|
|
,EXTRATO."type"
|
|
,EXTRATO."typePartner"
|
|
,EXTRATO."dateSale"
|
|
,EXTRATO."number"
|
|
,EXTRATO."seller"
|
|
,EXTRATO."customer"
|
|
,EXTRATO."descryptionTypePartner"
|
|
,EXTRATO."partnerId"
|
|
,EXTRATO."namePartner"
|
|
,EXTRATO."valueSale"
|
|
,EXTRATO."pecentCommission"
|
|
,EXTRATO."percentOff"
|
|
,EXTRATO."valueCommission"
|
|
,EXTRATO."percent"
|
|
,EXTRATO."valueCreate"
|
|
,EXTRATO."valuePaid"
|
|
,EXTRATO."datePaid"
|
|
,EXTRATO."paidType"
|
|
,SUM(SUM(VLSALDO))
|
|
OVER(ORDER BY EXTRATO."dateSale", EXTRATO."store", EXTRATO."number") as "balance"
|
|
FROM
|
|
(
|
|
SELECT 1 as "seq"
|
|
,'6' as "store"
|
|
,'SALDO INICIAL' as "type"
|
|
,CASE WHEN ESTPARCEIRO.TIPO = 'M' THEN 1 ELSE 2 END as "typePartner"
|
|
,TO_DATE(:1, 'DD/MM/YYYY') as "dateSale"
|
|
,NULL as "number"
|
|
,NULL as "seller"
|
|
,NULL as "customer"
|
|
,NULL as "descryptionTypePartner"
|
|
,ESTPARCEIRO.ID as "partnerId"
|
|
,ESTPARCEIRO.NOME as "namePartner"
|
|
,NULL as "valueSale"
|
|
,NULL as "pecentCommission"
|
|
,NULL as "percentOff"
|
|
,NULL as "valueCommission"
|
|
,NULL as "percent"
|
|
,NULL as "valueCreate"
|
|
,NULL as "valuePaid"
|
|
,NULL as "datePaid"
|
|
,NULL as "paidType"
|
|
,SUM(ESVEXTRATOPARCEIRO.VLSALDO) VLSALDO
|
|
FROM ESVEXTRATOPARCEIRO, ESTPARCEIRO
|
|
WHERE ESVEXTRATOPARCEIRO.CODPARCEIRO = :2
|
|
AND ESVEXTRATOPARCEIRO.CODPARCEIRO = ESTPARCEIRO.ID
|
|
AND ESVEXTRATOPARCEIRO.DATA < TO_DATE(:3, 'DD/MM/YYYY')
|
|
GROUP BY ESTPARCEIRO.ID, ESTPARCEIRO.NOME, ESTPARCEIRO.TIPO
|
|
|
|
UNION ALL
|
|
|
|
SELECT 2 as "seq"
|
|
,ESVEXTRATOPARCEIRO.codfilial as "store"
|
|
,ESVEXTRATOPARCEIRO.TIPOMOVIMENTO as "type"
|
|
,ESVEXTRATOPARCEIRO.TIPOPARCEIRO as "typePartner"
|
|
,ESVEXTRATOPARCEIRO.DATA as "dateSale"
|
|
,ESVEXTRATOPARCEIRO.NUMNOTA as "number"
|
|
,ESVEXTRATOPARCEIRO.NOMEVENDEDOR as "seller"
|
|
,ESVEXTRATOPARCEIRO.cliente as "customer"
|
|
,ESVEXTRATOPARCEIRO.DESCRICAOTIPO "descryptionTypePartner"
|
|
,ESVEXTRATOPARCEIRO.CODPARCEIRO as "partnerId"
|
|
,ESVEXTRATOPARCEIRO.NOMEPARCEIRO as "namePartner"
|
|
,ESVEXTRATOPARCEIRO.VLTOTAL as "valueSale"
|
|
,ESVEXTRATOPARCEIRO.PERCCOMISSAO as "pecentCommission"
|
|
,ESVEXTRATOPARCEIRO.PERCENTUAL_DESCONTO "percentOff"
|
|
,ESVEXTRATOPARCEIRO.VLCOMISSAO as "valueCommission"
|
|
,ESVEXTRATOPARCEIRO.PERCCOMISSAO as "percent"
|
|
,ESVEXTRATOPARCEIRO.VALORGERADO as "valueCreate"
|
|
,ESVEXTRATOPARCEIRO.VALORPAGO as "valuePaid"
|
|
,ESVEXTRATOPARCEIRO.DTPAGTO as "datePaid"
|
|
,ESVEXTRATOPARCEIRO.TIPOPAGTO as "paidType"
|
|
,ESVEXTRATOPARCEIRO.VLSALDO
|
|
FROM ESVEXTRATOPARCEIRO
|
|
WHERE ESVEXTRATOPARCEIRO.CODPARCEIRO = :4
|
|
AND ESVEXTRATOPARCEIRO.DATA BETWEEN TO_DATE(:5, 'DD/MM/YYYY') AND TO_DATE(:6, 'DD/MM/YYYY')
|
|
) EXTRATO
|
|
GROUP BY EXTRATO."seq"
|
|
,EXTRATO."store"
|
|
,EXTRATO."type"
|
|
,EXTRATO."typePartner"
|
|
,EXTRATO."dateSale"
|
|
,EXTRATO."number"
|
|
,EXTRATO."seller"
|
|
,EXTRATO."customer"
|
|
,EXTRATO."descryptionTypePartner"
|
|
,EXTRATO."partnerId"
|
|
,EXTRATO."namePartner"
|
|
,EXTRATO."valueSale"
|
|
,EXTRATO."pecentCommission"
|
|
,EXTRATO."percentOff"
|
|
,EXTRATO."valueCommission"
|
|
,EXTRATO."percent"
|
|
,EXTRATO."valueCreate"
|
|
,EXTRATO."valuePaid"
|
|
,EXTRATO."datePaid"
|
|
,EXTRATO."paidType"
|
|
ORDER BY EXTRATO."seq", EXTRATO."dateSale", EXTRATO."number" `;
|
|
|
|
const movs = await queryRunner.manager.query(sql, [ dateStart, partnerId, dateStart,
|
|
partnerId, dateStart, dateEnd ]);
|
|
return movs;
|
|
} catch (error) {
|
|
throw error;
|
|
} finally {
|
|
await queryRunner.release();
|
|
await connection.close();
|
|
}
|
|
}
|
|
|
|
|
|
}
|