export default class IBSCBS { public cst?: string; public cclasstrib?: string; public gibscbs?: gIBSCBS; constructor(json) { json = json || {}; if (!hasIBSCBSValue(json.cst)) return; this.cst = json.cst; this.cclasstrib = hasIBSCBSValue(json.cclasstrib) ? json.cclasstrib : '000001'; this.gibscbs = json.gibscbs || new gIBSCBS(json.gibscbs); } public recalc(value: ({ valor_final: number, vicms: number, vpis: number, vcofins: number, vipi: number })) { if (!hasIBSCBSValue(this.cst) || !this.gibscbs) return; this.gibscbs.vbc = (value.valor_final || 0.0) - (value.vicms || 0.0) - (value.vpis || 0.0) - (value.vcofins || 0.0) - (value.vipi || 0.0); // this.gibscbs.gibsuf.pibsuf = value.pibsuf || 0.0; // this.gibscbs.gibsmun.pibsmun = value.pibsmun || 0.0; // this.gibscbs.gcbs.pcbs = value.pcbs || 0.0; if (this.gibscbs.gibsuf.gred && this.gibscbs.gibsuf.gred.predaliq > 0.0){ this.gibscbs.gibsuf.gred.paliqefet = this.gibscbs.gibsuf.pibsuf * (1 - this.gibscbs.gibsuf.gred.predaliq / 100); } if (this.gibscbs.gibsmun.gred && this.gibscbs.gibsmun.gred.predaliq > 0.0){ this.gibscbs.gibsmun.gred.paliqefet = this.gibscbs.gibsmun.pibsmun * (1 - this.gibscbs.gibsmun.gred.predaliq / 100); } if (this.gibscbs.gcbs.gred && this.gibscbs.gcbs.gred.predaliq > 0.0){ this.gibscbs.gcbs.gred.paliqefet = this.gibscbs.gcbs.pcbs * (1 - this.gibscbs.gcbs.gred.predaliq / 100); } this.gibscbs.gibsuf.vibsuf = this.gibscbs.vbc * (this.gibscbs.gibsuf.gred && this.gibscbs.gibsuf.gred.predaliq ? this.gibscbs.gibsuf.gred.paliqefet : this.gibscbs.gibsuf.pibsuf) / 100; this.gibscbs.gibsmun.vibsmun = this.gibscbs.vbc * (this.gibscbs.gibsmun.gred && this.gibscbs.gibsmun.gred.predaliq ? this.gibscbs.gibsmun.gred.paliqefet : this.gibscbs.gibsmun.pibsmun) / 100; this.gibscbs.vibs = this.gibscbs.gibsuf.vibsuf + this.gibscbs.gibsmun.vibsmun; this.gibscbs.gcbs.vcbs = this.gibscbs.vbc * (this.gibscbs.gcbs.gred && this.gibscbs.gcbs.gred.predaliq ? this.gibscbs.gcbs.gred.paliqefet : this.gibscbs.gcbs.pcbs) / 100; } // fromProduto(impostoProduto?){ // this.cst = impostoProduto && impostoProduto.cst || '99'; // this.pcofins = impostoProduto && impostoProduto.pcofins || 0.0; // this.pbc = impostoProduto && impostoProduto.pbc || 0.0; // } } function hasIBSCBSValue(value) { return value !== undefined && value !== null && value !== ''; } class gIBSCBS { public vbc: number public gibsuf: gIBSUF public gibsmun: gIBSMun public vibs: number public gcbs: gCBS constructor(json) { json = json || {}; this.vbc = json.vbc || 0.0; this.gibsuf = json.gibsuf || new gIBSUF(json.gibsuf); this.gibsmun = json.gibsmun || new gIBSMun(json.gibsmun); this.gcbs = json.gcbs || new gCBS(json.gcbs); this.vibs = json.vibs || 0.0; } } class gCBS { public pcbs: number public vcbs: number public gdevtrib: gDevTrib public gred: gRed public gdif: gDif public tribcompgov: gTribCompraGov constructor(json) { json = json || {}; this.pcbs = json.pcbs || 0.9; this.vcbs = json.vcbs || 0.0; this.gdevtrib = json.gdevtrib || new gDevTrib(json.gdevtrib); this.gred = json.gred || new gRed(json.gred); this.gdif = json.gdif || new gDif(json.gdif); this.tribcompgov = json.tribcompgov || new gTribCompraGov(json.tribcompgov); } } class gIBSUF { public pibsuf: number public vibsuf: number public gdevtrib: gDevTrib public gred: gRed public gdif: gDif constructor(json) { json = json || {}; this.pibsuf = json.pibsuf || 0.1; this.vibsuf = json.vibsuf || 0.0; this.gdevtrib = json.gdevtrib || new gDevTrib(json.gdevtrib); this.gred = json.gred || new gRed(json.gred); this.gdif = json.gdif || new gDif(json.gdif); } } class gIBSMun { public pibsmun: number public vibsmun: number public gdevtrib: gDevTrib public gred: gRed public gdif: gDif constructor(json) { json = json || {}; this.pibsmun = json.pibsmun || 0.0; this.vibsmun = json.vibsmun || 0.0; this.gdevtrib = json.gdevtrib || new gDevTrib(json.gdevtrib); this.gred = json.gred || new gRed(json.gred); this.gdif = json.gdif || new gDif(json.gdif); } } class gDevTrib { public vdevtrib: number constructor(json) { json = json || {}; this.vdevtrib = json.vdevtrib || 0.0; } } class gRed { public predaliq : number public paliqefet: number constructor(json) { json = json || {}; this.predaliq = json.predaliq || 0.0; this.paliqefet = json.paliqefet || 0.0; } } class gDif { public pdif: number public vdif: number constructor(json) { json = json || {}; this.pdif = json.pdif || 0.0; this.vdif = json.vdif || 0.0; } } class gTribCompraGov { public paliqibsuf: number public vtribibsuf: number public paliqibsmun: number public vtribibsmun: number public paliqcbs: number public vtribcbs: number constructor(json) { json = json || {}; this.paliqibsuf = json.paliqibsuf || 0.0; this.vtribibsuf = json.vtribibsuf || 0.0; this.paliqibsmun = json.paliqibsmun || 0.0; this.vtribibsmun = json.vtribibsmun || 0.0; this.paliqcbs = json.paliqcbs || 0.0; this.vtribcbs = json.vtribcbs || 0.0; } }