using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using ADODB;
using UFIDA.U8.Framework.Api.ControlObject.Common;
using UFIDA.U8.Framework.Api.ControlObject.Entity;
using UFIDA.U8.Framework.Api.ControlObject.U8M;
namespace UFIDA.U8.Framework.Api.ControlObject.AP
{
///
/// 票据管理(应收)
///
public class NoteManageAR
{
///
/// 保存票据
///
///
///
///
///
public async Task> NoteSave(BaseLogin login, Dictionary input,bool bNeedBillClosed)
{
try
{
//var clsSysInterface = $"UfHeronReport.clsSysInterface".GetComObject();
//var clsReportManager = $"UfHeronReport.clsReportManager".GetComObject();
//var clsCloseBil = $"UFAPBO.clsCloseBil".GetComObject();
var clsApNote = $"UFAPBO.clsApNote".GetComObject();
var voucherData = $"NoteManageAR.VoucherData".GetComObject();
var voucher = $"NoteManageAR.Voucher".GetComObject();
var clsPub = $"NoteManageAR.clsPub".GetComObject();
//var rpPub = $"UFRPPub.clsPub".GetComObject();
//clsSysInterface.InitInterFace("AP", adoConn:login.Connection, objLogin: login._vbLogin);
//var clsReportManager = clsSysInterface.GetReportEngine();
clsPub.main(login._vbLogin);
clsPub.bNeedZD = true;
voucherData = CommonHelper.ToVoucherData(input, voucherData);
voucherData.FillData(ref voucherData, ref clsPub, true);
//rpPub.oLogin = login._vbLogin;
//rpPub.DBConn = login.Connection;
//rpPub.InitPubs(login._vbLogin.DataSource, login._vbLogin.get_cAcc_Id(), login._vbLogin.cIYear, $"{login._vbLogin.CurDate:yyyy-MM-dd}");
voucher.Init(login._vbLogin,clsPub.RepManager,clsPub.RepSys);
string pSubId = "AR";
object ssDate =$"{login._vbLogin.CurDate:yyyy-MM-dd}" ;
login._vbLogin.LoginEx(pSubId, ssDate);
clsApNote.Init(login._vbLogin, clsPub.Conn);
var res = new BaseResult();
var errMsg = "";
voucher.bNeedBillClosed = bNeedBillClosed;
Trace.WriteLine($"{clsPub.bNeedZD}");
Trace.WriteLine($"{clsPub.cNoteCancelNo}");
Trace.WriteLine($"{Microsoft.VisualBasic.Information.TypeName(clsPub.objARAPProxy)}");
//voucher.m_bStartFlag = false;
//voucher.OneVoucherData = voucherData;
//voucher.objPub = clsPub;
res.bSuccess = voucher.NoteCheck(voucherData, ref errMsg);
//res.bSuccess = voucher.VoucherHeadCheck(voucherData,true, ref errMsg);
if (!res.bSuccess)
{
res.message = "保存失败";
res.result = errMsg;
return res;
}
res.bSuccess = voucher.NoteSave(ref voucherData, ref errMsg);
if (!res.bSuccess)
{
res.message = "保存失败";
res.result = errMsg;
return res;
}
var clsVouchFacade = new clsVouchFacade();
var newInput = new Dictionary()
{
{"cVouchID","0000000001"},
{ "dVouchDate", $"{login._vbLogin.CurDate:yyyy-MM-dd}" },
{ "cTypeName", "收款单" },
{ "cSSName", voucherData.cVouchTypeName },
{ "cexch_name", voucherData.cExch_Name },
{ "iAmount_f", voucherData.iAmount },
{ "iAmount", voucherData.iAmount_Local },
{ "cBank", voucherData.cPayBillBank },
{ "cBankAccount", voucherData.cPayBillAccount },
{ "cNoteNo", voucherData.CVouchId },
{ "cDepCode", voucherData.cDeptCode },
//{ "cDwCode", "03006" },
{ "iPayType", 0 },
{ "cPayType", "货款" },
{ "cDwCode", voucherData.cDwCode },
{ "cOperator", voucherData.CBill },
{ "cDigest", voucherData.cDigest },
{ "bStartFlag", voucher.m_bStartFlag },
{ "cVouchType", "48" },
{ "cAuthID", "00000001" },
{ "cCoVouchType", voucherData.cVouchType },
{ "cCoVouchID", voucherData.CVouchId },
{ "cFlag", voucherData.cFlag },
{ "cSSCode", voucherData.cSettleCode },
{ "cPerson", voucherData.cPerson },
{ "cNatBank", voucherData.cReceiveBank },
{ "cNatBankAccount", voucherData.cReceiveAccount },
//{ "cCode", voucher.getNoteKm(voucherData.cVouchType) },
{ "cCode", "" },
{ "iPayForOther", 0 },
{ "bFromBank", 0 },
{ "bToBank", 0 },
{ "bSure", 0 },
};
var bodys = new List>();
var body = new Dictionary()
{
{"editprop","A"},
{"cMemo",voucherData.cDigest},
{"cCusVen",voucherData.cDwCode},
//{"cCusVen","03006"},
{"iAmt_f",voucherData.iAmount},
{"iAmt",voucherData.iAmount_Local},
{"cKm",voucher.getNoteKm(voucherData.cVouchType)},
{"iRAmt_f",voucherData.iAmount},
{"iRAmt",voucherData.iAmount_Local},
{"cDepCode",voucherData.cDeptCode},
{"cPersonCode",voucherData.cPerson},
{"iType",0},
{"cType","应收款"},
};
newInput["body"] = bodys;
bodys.Add(body);
var res2=await clsVouchFacade.SaveVouch(login, newInput, "收款单", true,false /*"cVouchID"*/);
//var condition = $"";
//res.bSuccess = clsApNote.Sign(condition, ref errMsg);
////res.bSuccess = pz_Proc.AP_ZD_One("48", "", $"{voucherData.CVouchId}");
////login.Connection.BeginTrans();
////res.bSuccess = voucher.VoucherHeadSave(voucherData, true, ref errMsg);
//Trace.WriteLine($"{voucher.m_strVoucherDirect}");
//Trace.WriteLine($"{voucherData.cProcStyle}");
if (!res2.bSuccess)
{
res.message = "保存失败";
res.result = res2.result;
res.voucherCode = $"{voucherData.CVouchId}";
res.voucherId = $"{voucherData.CVouchId}";
return res;
}
res.message = "保存成功";
res.voucherCode = $"{voucherData.CVouchId}";
res.voucherId = $"{voucherData.CVouchId}";
return res;
}
catch (Exception ex)
{
await Task.Delay(1);
return new BaseResult() { bSuccess = false, message = "保存失败", result = ex.Message };
}
}
}
}