webservices.factory('vatApproveService', ['$http', 'apiConfig', function ($http, apiConfig) {
    'use strict';
    return {
        sample: function () {
            return $http.get('url', apiConfig.createVat());
        },

        commitNewApproval: function (param) {
            return $http.post('/approval/commit',{
            projectId: param.projectId,
            periodDate: param.periodDate
            }, apiConfig.createVat());
        },

        approvalTasks: function () {
            var assignee='accountant';
            return $http.get('/approval/tasks/'+assignee, apiConfig.createVat());
        },

        getApprovalTemplateInfo:function(templateId){
            return $http.get('/approval/templateInfo/'+templateId, apiConfig.createVat());
        },

        getExportOutputInvoiceList: function (param) {
            return $http.post('/outputInvoiceImport/getExportOutputInvoiceList', {
                PageInfo: param.pageInfo,
                PeriodStart: param.periodStart,
                PeriodEnd: param.periodEnd,
                InvoiceType: param.invoiceType,
                StartInvoiceDate: param.invoiceDateStart,
                EndInvoiceDate: param.invoiceDateEnd,
                ClassCode: param.classCode,
                InvoiceNumber: param.invoiceNumber,
                BuyerName: param.buyerName,
                ProductName: param.productName,
                AmountStart: param.amountStart,
                AmountEnd: param.amountEnd,
                TaxAmountStart: param.taxAmountStart,
                TaxAmountEnd: param.taxAmountEnd,
            }, apiConfig.createVat({ responseType: 'arraybuffer' }));
        },


        queryInputInvoiceList: function (param) {
            return $http.post('/inputInvoiceImport/inputInvoicePreviewList', {
                PageInfo: param.pageInfo,
                PeriodStart: param.periodStart,
                PeriodEnd: param.periodEnd,
                CertificationDateStart: param.certificationDateStart,
                CertificationDateEnd: param.certificationDateEnd,
                InvoiceCode: param.invoiceCode,
                InvoiceNumber: param.invoiceNumber,
                SellerTaxNumber: param.sellerTaxNumber,
                AmountStart: param.amountStart,
                AmountEnd: param.amountEnd,
                InvoiceType: param.invoiceType,
                TaxAmountStart: param.taxAmountStart,
                TaxAmountEnd: param.taxAmountEnd,
                CertificationStatus: param.certificationStatus
            }, apiConfig.createVat());
        },

        queryInputInvoiceItemList: function (inputInvoiceID) {
            return $http.get('/inputInvoiceImport/inputInvoiceItemPreviewList/' + inputInvoiceID, apiConfig.createVat());
        },

        //导出进项发票数据
        getExportInputInvoiceList: function (param) {
            return $http.post('/inputInvoiceImport/exportQueryData/get', {
                PageInfo: param.pageInfo,
                PeriodStart: param.periodStart,
                PeriodEnd: param.periodEnd,
                CertificationDateStart: param.certificationDateStart,
                CertificationDateEnd: param.certificationDateEnd,
                InvoiceCode: param.invoiceCode,
                InvoiceNumber: param.invoiceNumber,
                SellerTaxNumber: param.sellerTaxNumber,
                AmountStart: param.amountStart,
                AmountEnd: param.amountEnd,
                InvoiceType: param.invoiceType,
                TaxAmountStart: param.taxAmountStart,
                TaxAmountEnd: param.taxAmountEnd,
                CertificationStatus: param.certificationStatus
            }, apiConfig.createVat({ responseType: 'arraybuffer' }));
        },
 
        voucherSelectAdvancedByEntry: function (mainRelation, allJe, pagingInfo, listQueryCondition) {
            return $http.post('/voucher/voucherSelectAdvancedByEntry', {
                MainRelation: mainRelation,
                AllJe: allJe,
                PagingInfo: pagingInfo,
                ListQueryCondition: listQueryCondition
            }, apiConfig.create());
        },
        voucherSelectAdvancedByVoucher: function (mainRelation, allJe, pagingInfo, listQueryCondition) {
            return $http.post('/voucher/voucherSelectAdvancedByVoucher', {
                MainRelation: mainRelation,
                AllJe: allJe,
                PagingInfo: pagingInfo,
                ListQueryCondition: listQueryCondition
            }, apiConfig.create());
        },
        voucherSelectAdvancedCount: function (mainRelation, isEntryShow, allJe, listQueryCondition) {
            return $http.post('/voucher/voucherSelectAdvancedCount', {
                MainRelation: mainRelation,
                AllJe: allJe,
                IsEntryShow: isEntryShow,
                ListQueryCondition: listQueryCondition
            }, apiConfig.create());
        },
        getVoucherByConditon: function (mainRelation, allJe, period, vID, group, listQueryCondition) {
            return $http.post('/voucher/getVoucherByConditon', {
                MainRelation: mainRelation,
                AllJe: allJe,
                Period: period,
                VID: vID,
                Group: group,
                ListQueryCondition: listQueryCondition
            }, apiConfig.create());
        },
        getSelectWhereString: function (mainRelation, allJe, listQueryCondition) {
            return $http.post('/voucher/getSelectWhereString', {
                MainRelation: mainRelation,
                AllJe: allJe,
                ListQueryCondition: listQueryCondition
            }, apiConfig.create());
        },
        getEnterpriseAccount: function () {
            return $http.get('/voucher/getEnterpriseAccount', apiConfig.create());
        }
    };
}]);