2025-03-11 20:16:05 +00:00
/ *
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' ;
@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 ( ) ;
}
}
}